在Java中创建一个基元或对象数组

时间:2010-12-14 04:54:21

标签: java polymorphism

  

可能重复:
  Can a single Java variable accept an array of either primitives or objects?

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

不幸的是,我无法做到

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

因为原语不是对象!有没有办法进一步抽象这个级别?

编辑我知道我可以将其作为对象传递,但是如何在方法中将其作为数组进行访问?我不能这样做:

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

3 个答案:

答案 0 :(得分:1)

import java.lang.reflect.Array;

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

答案 1 :(得分:1)

所有数组类型都是Object类型,没有更具体的。

import java.lang.reflect.Array;

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

答案 2 :(得分:0)

不幸的是,没有比重载myMethod更好的解决方案(目前)来处理你想要处理的每种基本类型。例如,您可以查看班级Arrays

binarySearch方法的签名

当然,您也可以使用反射传递Object并检查它是否是数组(在这种情况下,请检查此数组的类型)。但是,如果您这样做,那么您的应用程序将变得不那么类型。