2010-12-14 92 views
2

可能重复:
Can a single Java variable accept an array of either primitives or objects?在Java中创建的图元或对象的数组

我想创建一个可以接受的任意阵列的方法。该数组可以是基元数组或对象数组。

不幸的是,我不能做

public void myMethod(Object[] a) {...} 

,因为原语不是对象!有没有办法将这一层次进一步抽象出来?

编辑我明白我可以将它作为一个对象传递,但是如何在方法中将其作为数组访问?我不能这样做:

public void myMethod(Object[] a) { 
    Object something = a[0]; 
    } 
+3

Dupe of http://stackoverflow.com/questions/1892599/can-a-single-java-variable-accept-an-array-of-either-primitives-or-objects – 2010-12-14 04:58:10

回答

1

所有的数组类型是Object类型,仅此而已sepecific的。

import java.lang.reflect.Array; 

public void myMethod(Object array) { 
    Object first = Array.get(a, 0); // Object, primitives are wrapped. 
} 
1
import java.lang.reflect.Array; 

public void myMethod(Object[] a) 
{ 
    Array.get(a, 0);  
} 
+0

你仍然不能传递一个int [ ]到一个对象[] – 2010-12-14 08:02:57

0

不幸的是,有没有更好的解决方案(目前)不是超载myMethod处理要处理各种基本类型。例如,您可以看到的binarySearch方法的签名中的类Arrays

当然,你也可以传递一个Object和使用反射检查,如果它是一个数组(在这种情况下,检查该阵列的类型) 。但是,如果你这样做,你的应用程序将变得更少类型安全。