所有原始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来实现您想要的,这里的Number
是java.lang.Number
:
public static void print(T[] arr) { for (int i = 0; i < arr.length; i++) { System.out.println(i + " => " + arr[i]); } }
但这只适用于Primitive包装类的数组而不适用于Primitive数组。