2011-03-09 53 views
2

我有这个投原始数组对象和背部

int [] abc = new int[30]; 

Object arr = abc; 

我怎么投arr回到int[]?即

int [] foo = (int[])arr 

而且,如果ARR可能指向int[]byte[],如何区分它们?

我查过arr.getClass().getName()退货[Iarr.getClass().isPrimitive()false。必须是另一种检测它的方法?

谢谢。

PS。我必须在我的数组中使用原始类型。

+1

为什么你需要这个? – 2011-03-09 21:30:55

回答

6

铸造是正确的,(int[])arr是伎俩。

您可以通过比较类对象识别的类型,如果你想:

if(arr.getClasS() == int[].class) { 
    ... 
} 

或更好

if(arr instanceof int[]) { 
    ... 
} 

[I类名是另一种方式,但在代码不太清楚。 你也可以做arr.getClass().getComponentType(),应该返回int.class

+0

很好的答案,但我不能帮助,但要注意到你的“或更好的”是一个(或...),你知道加里朱尔斯的歌。 – 2011-03-09 21:38:18

+0

我不知道您的确切用例,但您可能需要执行Class.isAssignableFrom而不是instanceof或equals检查。 – Ali 2011-03-09 21:42:19

+0

@Captain:我不知道这首歌(或者听说过加里·儒勒斯的名字)。你有链接吗? – 2011-03-09 21:45:56