gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:42:07 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com