黑马程序员技术交流社区

标题: 关于反射一个很奇怪的问题,字节码比较 [打印本页]

作者: liujkh123    时间: 2013-6-20 20:49
标题: 关于反射一个很奇怪的问题,字节码比较
本帖最后由 liujkh123 于 2013-6-27 16:10 编辑

今天听张孝祥老师讲反射,然后自己试了一下代码 竟然出现下面的问题,真是搞不懂
  1. int[] a1 = new int[] {1, 2, 3};
  2.                 int[] a2 = new int[] {1, 2, 3, 4};
  3.                 int[][] a3 = new int[2][3];
  4.                 String[] a4 = new String[]{"a", "b", "c"};
  5.                
  6.                 System.out.println(a1.getClass().getName() == a2.getClass().getName());
  7.                 //下面这段代码,编译为什么通不过?
  8.                 System.out.println(a1.getClass() == a3.getClass());
  9.                 //下面这段代码编译是可以通过的
  10.                 System.out.println(a1.getClass().getName() == a3.getClass().getName());
复制代码
难道是我的Eclipse的问题?

作者: 蚂蚁搬家    时间: 2013-6-21 20:44
a1和a2都是一维整型数组,他们的字节码类型是一致的,所以他们的getName方法返回值比较结果是true,
作者: 蚂蚁搬家    时间: 2013-6-21 20:49
a3是二维整型数组,老师说只有相同维度、相同数据类型的数组,他们的字节码类型才是一致的,a1和a3的字节码类型不一致,无法比较,但他们的getName方法返回的都是String类型的字节码文件名字,可以比较,结果是false;
作者: L.I.F.E    时间: 2013-6-22 17:53
java1.5之后,引入了泛型,不同类型的不具有可比性了!你可以把编译环境设置1.4
作者: 神之梦    时间: 2013-6-27 14:03
如果楼主问题已解决,请把“未解决”改为“已解决”,如果没有,可以继续追问,谢谢!




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