为什么要显示Exception这段代码?

时间:2015-08-20 21:28:11

标签: java exception casting

我正在用Java学习算法,我不明白为什么在第7行显示错误?

class Test {
    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;
        System.out.println(b[1]);
    }
}

1 个答案:

答案 0 :(得分:12)

我假设你有一个“ClassCastException无法从[[I到[I”]转换。当你收到错误时,你应该认为它很重要,如果你不知道它意味着什么,你通常可以谷歌。

这里的神秘部分是内部,JVM将int[]称为[Iint[][][[I [一开始意味着它是一个I数组intZ的缩写,布尔值B,字节S,简称CF字符,D代表浮点数,J代表双倍,J代表。 IL之后的字母。内置的类以;开头,以L结尾我本来很想让J为长(int [ ]) o1; 为Java类,但那只是我;)

你不能这样做

o1

因为int[][]实际上是int[]而不是... -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file ... ,并且您无法在不兼容的类型之间进行转换。