我有这个 int [] abc = new int[30]; Object arr = abc; 如何将arr转换回int[]? int [] foo = (int[])arr 此外,如果arr可以指向int[]或byte[],如何区分它们?我已经检查了arr.getClass().getName()返回[I和arr.getClass().isPrimitive()为false。必须有另一种方法来检测吗?谢谢。PS:我必须在我的数组中使用原始类型。
转换是正确的,(int[])arr可以解决问题。 如果需要的话,您可以通过比较类对象来识别类型: if(arr.getClasS() == int[].class) { ... } 或者更好。if(arr instanceof int[]) { ... } [I类名是另一种方式,但在代码中不太清晰。 您也可以使用arr.getClass().getComponentType(),它应该返回int.class。
isAssignableFrom
并不是真正有用的。而且通常情况下,当你有一个对象时,最好使用c.isInstance(o)
而不是c.isAssignableFrom(o.getClass())
。 - Paŭlo Ebermann