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

我有这个

int [] abc = new int[30]; Object arr = abc; 

我如何将arrint[] ?? 即

 int [] foo = (int[])arr 

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

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

谢谢。

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

转换是正确的, (int[])arr可以解决问题。

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

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

或更好

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

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