将原始数组转换为Object并返回

Sai*_*ira 2 java arrays

我有这个

int [] abc = new int[30];

Object arr = abc;
Run Code Online (Sandbox Code Playgroud)

我如何施展arrint[]?即

int [] foo = (int[])arr
Run Code Online (Sandbox Code Playgroud)

另外,如果arr可以指向int[]或者byte[],如何区分它们?

我检查arr.getClass().getName()的回报[Iarr.getClass().isPrimitive()false.必须是另一种检测它的方法吗?

谢谢.

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

Paŭ*_*ann 6

铸造是正确的,(int[])arr诀窍.

如果需要,可以通过比较类对象来识别类型:

if(arr.getClasS() == int[].class) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

或更好

if(arr instanceof int[]) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

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