java.lang.ClassCastException - 访问对象数组的 Java 数组,如二维对象数组

标签 java arrays multidimensional-array classcastexception

为了解决使用 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/

相关文章:

java - 将 unicode 字符传递给 Jython

JavaScript 数组问题

php - 解析 JSON 数组 PHP - 字符串和 float

java - 为什么我的方法没有按照我想要的方式对矩阵中的列进行排序?

javascript - 如何从嵌套的 json 数组中提取数据?

java - 多维数组转置

java - ANT:复制文本文件的某些部分

JavaFX TableView 不显示内容

java - 为什么我的地板不平整?

javascript - 如何在 JavaScript 中显示字符串内的数组?