任何人都可以解释此异常以及此代码中实际发生的情况:
public class Dims {
public static void main(String[] args) {
int[][] a = {{1, 2,}, {3, 4}};
int[] b = (int[]) a[1];
Object o1 = a;
int[][] a2 = (int[][]) o1;
int[] b2 = (int[]) o1; //Exception in thread "main" java.lang.ClassCastException: [[I cannot be cast to [I
System.out.println(b[1]);
}
}
int[]
与int[][]
并不兼容,因此您无法将其转换为另一种,但是您正在尝试这样做。的运行时类型o1
为int[][]
,您正尝试将其强制转换为int[]
。
OK,为什么类型就是所谓的[[I
和[I
?您可以尝试运行int[].class.toString()
并int[][].class.toString
了解它。在int[].class
将与代码来表示[
(这意味着阵列)I
(这意味着整数),并且int[][].class
将被表示为[[
(这意味着阵列的阵列)的I
(整数)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句