黑马程序员技术交流社区

标题: 报错异常看不懂。。。大家看看呗 [打印本页]

作者: yan5108652    时间: 2013-6-27 17:12
标题: 报错异常看不懂。。。大家看看呗
本帖最后由 孙百鑫 于 2013-6-30 08:50 编辑

                                                                     int [] a1 = new int []{1,2,3};
                                                                       int [] a2 = new int [4];
                                                                       int [] []  a3 = new int [2] [3];
                                                                       String [] a4 = new String[]{"a","b","c"};
                                                                       System.out.println(a1.getClass() == a4.getClass());
                                                                       System.out.println(a1.getClass() == a3.getClass());

无法通过编译,错误提示:Incompatible operand types Class<capture#8-of ? extends int[]> and Class<capture#9-of ? extends int[][]>

没看懂。。这个是什么异常啊?咋解决?

作者: 小冰块    时间: 2013-6-27 17:15
那句话是告诉你一位数组int[]和二维数组int[][]是不兼容类型,看看你最后一句。
作者: 王广亚    时间: 2013-6-27 17:23
楼主如果代码就这些的话我运行了一下并没有报错啊

结果.PNG (26.34 KB, 下载次数: 0)

运行代码及结果在这

运行代码及结果在这

作者: L.I.F.E    时间: 2013-6-27 17:43
如果用的是myeclipse,请将编译环境设置为jdk 1.4,就可以编译通过了!
这是因为 1.5之后引入了泛型,这变成了不兼容类型。
作者: 王靖远    时间: 2013-6-27 17:52
我不知道为什么我用jdk1.7也是报错,张孝祥老师用的是jdk1.6
作者: zms2100    时间: 2013-6-27 19:34
Lz只报一句异常吗???为啥我是报两个异常呢?String[]数组的字节码在我的MyEclipse版本上也不能跟基本数据类型数组字节码比较。
这个应该是JDK1.5版本后的变革,“==”也就只能比较同种数据类型间字节码,(是建立在我的MyEclipse与Jdk版本基础上得出的总结),如果我们是相同的,那我就贴我的总结,不然我就不误人子弟,O(∩_∩)O~。
PS:  因为equals的底层其实也是“==”,只不过JDK1.5版本后“==”在编译时会进行类型检测,当然也是跟泛型一样的只在编译时有效,所以可以用反射的方式进行不同数据类型间比较(因为编译时它是不明确数据类型)。
作者: 280270738    时间: 2013-6-27 19:52
错误提示没看懂,运行了下结果和上面那同学一样没报错都是flase
作者: 王广亚    时间: 2013-6-27 19:58
我用的是jdk1.6的没有报错,不过我用的不是MyEclipse而是eclipse
作者: 郭伟杰    时间: 2013-6-28 10:40
互不相容的操作对象类型
作者: 孙百鑫    时间: 2013-6-30 08:50
楼主您好,帖子长时间没有动态我已经将您的帖子改成已解决。如有问题请私密我哦~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2