所有原始Java类型的参数?

我有这个function;

static public void Print(Object[] arr) { for(int i = 0; i  " + arr[i]); } 

我想对每个基本类型数组使用它。 如果不为每种原始类型覆盖它,有没有办法做到这一点?

注意:这只是一个示例函数。 如果有的话,我想知道这项技术。

不,这是不可能的。 数据元素类型未包装, Object[]forms参数不适用于例如int[]实际参数。 您必须为每个基本类型编写一个方法,如java.util.Arrays 。 丑,但唯一的方法。

原始数组是java中的对象,因此您可以使用Object type作为参数(注意,不是Object数组,而只是Object)。 问题是,你仍然需要将它转换为正确的类型才能迭代数组。

 public class ArrayTest { public void paramTest(Object args) { if(args instanceof int[]) { System.out.println("int-array"); } if(args instanceof float[]) { System.out.println("float-array"); } } @Test public void test() { paramTest(new int[5]); paramTest(new float[5]); } } 

输出:

 int-array float-array 

是的,那叫做generics。 generics – 就像c ++中的模板 – 变量类型。

看看这里: http : //en.wikipedia.org/wiki/Generics_in_Java

您可以使用这样的Javagenerics来实现您想要的,这里的Numberjava.lang.Number

 public static  void print(T[] arr) { for (int i = 0; i < arr.length; i++) { System.out.println(i + " => " + arr[i]); } } 

但这只适用于Primitive包装类的数组而不适用于Primitive数组。