【发布时间】:2015-05-06 06:27:42
【问题描述】:
为了对使用 JNI 在 C 代码中创建的 Object 数组进行故障排除,我创建了带有 Object 数组数组的纯 Java 代码,如下所示。 我想使用 [][] 运算符以二维对象数组 (Object[][]) 之类的方式访问该数组。但是,当将数组转换为 Object[][] 时,代码会崩溃,并出现以下异常。
java.lang.ClassCastException: [Ljava.lang.Object;不能转换为 [[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
谁能帮帮我?
【问题讨论】:
-
为什么不首先声明为
Object[][]? -
您好,您的 outerArray 是一维的,因此您无法投射。
-
异常说一维数组不能转换成二维数组
-
"使用 [][] 运算符" -- 这不是运算符!它只是代替一个括号,您将使用两个,例如int[][] 是一个二维整数数组。
-
sigh 又是一问一答。 @user:当你寻求帮助时,停留几分钟回答试图帮助你的人的问题。
标签: java arrays multidimensional-array classcastexception