黑马程序员技术交流社区

标题: 为什么 张孝祥老师的 java高新技术里的 数组反射里 可以这样写??? [打印本页]

作者: 湛添友    时间: 2014-4-30 20:21
标题: 为什么 张孝祥老师的 java高新技术里的 数组反射里 可以这样写???
int[] a1=new int[3];
                int[] a2=new int[4];
                int[][]a3=new int[2][4];
                String[] a4=new String[]{"d","h","d","g"};
                System.out.println(a1.getClass() == a2.getClass());
                //System.out.println(a1.getClass() == a3.getClass());
                //System.out.println(a1.getClass() == a4.getClass());
为什么这两行编译不同过啊?  返回的不应该是Class吗?  怎么会类型不兼容呢?
作者: WO.瘾姓埋銘    时间: 2014-5-1 01:02
System.out.println(a1.getClass() == (Object)a3.getClass());
System.out.println((Object)a1.getClass() == a4.getClass());

这么写就对了,试出来的.
作者: NewDemo    时间: 2014-5-1 10:12
这是编译报错,你用的比以前的东西高级了,后面两个明显因为是类型都不对,答案是false的就直接编译就报错了
再说明白点,编译器版本高了聪明了,觉得这种问题低级所以不想让你编译通过了
如果希望看到老师视频中讲的那样出现false,照着下面修改下jdk编译器的版本
找到工程文件右键,选择属性properties



然后将编译器调成1.5之前的版本,我这里选了1.4的




最后再来看下,编译通过,运行结果如下







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