黑马程序员技术交流社区

标题: 数组反射问题 [打印本页]

作者: 龚首道    时间: 2013-9-1 18:14
标题: 数组反射问题
本帖最后由 龚首道 于 2013-9-1 21:12 编辑
  1. int[] a = new int[3];
  2.                 int[] b = new int[4];
  3.                 int[][] c = new int[4][5];
  4.                 String[] d = new String[3];
  5.                 System.out.println(a.getClass() == b.getClass());
  6.                 System.out.println(a.getClass() == c.getClass());//提示错误
  7.                 System.out.println(a.getClass() == d.getClass());//提示错误
复制代码
这是张老师视频里的一段代码。提示:不兼容的类型。
但是我是按照老师的代码敲的啊。
请问这是什么问题?

作者: 范龙波    时间: 2013-9-1 18:53
这个问题似乎看到好多遍了
把你编译器的版本搞低点就通过了,  改到1.4就不会报错了.
改编译环境 , 不是改运行环境 !

作者: 张洪慊    时间: 2013-9-1 20:37
API中getClass描述:
实际结果类型是 Class<? extends |X|>,其中 |X| 表示清除表达式中的静态类型,该表达式调用 getClass。 例如,以下代码片段中不需要强制转换:
Number n = 0;
Class<? extends Number> c = n.getClass();
在以上例子中:
System.out.println(a.getClass() == b.getClass());//它在编译时期确定返回类型:<? extends int[]>类型与<? extends int[][]> 不可比较

更直接点:
Integer i=new Integer(3);
String s=new String("a");
System.out.println(i.getClass()==s.getClass())//依然是不可比较类型
作者: 龚首道    时间: 2013-9-1 22:18
范龙波 发表于 2013-9-1 18:53
这个问题似乎看到好多遍了
把你编译器的版本搞低点就通过了,  改到1.4就不会报错了.
改编译环境 , 不是改运 ...

恩恩。我试试

作者: 龚首道    时间: 2013-9-1 22:19
张洪慊 发表于 2013-9-1 20:37
API中getClass描述:
实际结果类型是 Class

详尽!学习了!thanks

作者: 兜兜转转    时间: 2013-9-2 06:01
张洪慊 发表于 2013-9-1 20:37
API中getClass描述:
实际结果类型是 Class

不理解,感觉太书面化了,看不懂,能从新手的角度,比较通俗的解释一下吗?谢谢诶





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