为了解决使用 JNI 在 C 代码中创建的对象数组的问题,我使用对象数组的数组创建了纯 Java 代码,如下所示。 我想使用 [][] 运算符以类似于二维对象数组 (Object[][]) 的方式访问该数组。但是,当将数组转换为 Object[][] 时,代码会崩溃,但出现以下异常。
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [[Ljava.lang.Object
Object[] outerArray = new Object[3];
outerArray[0] = new Object[] {1,2,3,4,5};
outerArray[1] = new Object[] {10,20,30,40,50};
outerArray[2] = new Object[] {100,200,300,400,500};
Object o = ((Object[])outerArray[0])[0]; // (1) OK but awkward
Object[][] = (Object[][])outerArray; // (2) Runtime error!!
o = outerArray[0][0]; // (3) I want to do this
有人可以帮助我吗?
最佳答案
当声明一个一维数组,然后在每个单元格内添加数组时,您正在构建:
[ [][][] ] [ [][][] ] [ [][][] ]
无法使用 [][]
访问它,因为它只有 1 行,并且每个单元格都有另一行对象,因此需要使用“尴尬的转换”来访问它
如果您想要列结构:
[] [] []
[] [] []
[] [] []
它应该用这个创建:
Object[][] outerArray = new Object[3][5];
关于java.lang.ClassCastException - 访问对象数组的 Java 数组,如二维对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30069113/