黑马程序员技术交流社区
标题:
关于反射字节码比较问题
[打印本页]
作者:
曹冬明
时间:
2014-4-20 00:50
标题:
关于反射字节码比较问题
int[] a1 = new int[3];
int[] a2 = new int[4];
int[][] a3 = new int[2][3];
String[] a4 = new String[4];
System.out.println(a1.getClass() == a2.getClass());
System.out.println(a1.getClass() == a4.getClass());
System.out.println(a1.getClass() == a4.getClass());
复制代码
为什么我看张老师的视频就可以编译通过,我的就不行呢,报这个异常
Incompatible operand types Class<capture#4-of ? extends int[]> and Class<capture#5-of ? extends String[]>
Incompatible operand types Class<capture#6-of ? extends int[]> and Class<capture#7-of ? extends String[]>
作者:
悠然丶
时间:
2014-4-20 09:37
本帖最后由 悠然丶 于 2014-4-20 09:45 编辑
int[] a1 = new int[3];
int[] a2 = new int[4];
int[][] a3 = new int[2][3];
String[] a4 = new String[4];
System.out.println(a1.getClass() == a2.getClass());
System.out.println(a1.getClass().equals( a4.getClass()));//把==改成equals就可以了,你的a4是String[]类型的.不能直接比较
System.out.println(a1.getClass().equals(a4.getClass()));
作者:
曹冬明
时间:
2014-4-20 15:05
悠然丶 发表于 2014-4-20 09:37
int[] a1 = new int[3];
int[] a2 = new int[4];
int[][] a3 = new int[2][3];
我比较的是字节码,而且张孝祥老师在视频里就这样用的,没问题,我就有问题
作者:
NewDemo
时间:
2014-5-1 10:17
看来很多同学都有这个疑问,那就干脆再复制黏贴过来算了,不知道兄弟你的这个问题是否得到了解决,引用我之前的回答
这是编译报错,你用的比以前的东西高级了,后面两个明显因为是类型都不对,答案是false的就直接编译就报错了
再说明白点,编译器版本高了聪明了,觉得这种问题低级所以不想让你编译通过了
如果希望看到老师视频中讲的那样出现false,照着下面修改下jdk编译器的版本
找到工程文件右键,选择属性properties
然后将编译器调成1.5之前的版本,我这里选了1.4的
最后再来看下,编译通过,运行结果如下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2