黑马程序员技术交流社区

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

作者: kkopopo    时间: 2014-2-24 22:14
标题: 数组的反射
本帖最后由 kkopopo 于 2014-2-24 22:28 编辑
  1. int[] a1 = new int[3];
  2. int[] a2 = new int[4];
  3. int[][] a3 = new int[2][3];
  4. String[] a4 = new String[3];
  5. System.out.println(a1.getClass() == a2.getClass());
  6. System.out.println(a1.getClass() == a4.getClass());
  7. System.out.println(a1.getClass() == a4.getClass());
复制代码

最后两句代码编译不通过  报错类型不匹配
可是在黑马张老师视频中教学过程中编译通过了?
why?
视频中截图代码!  千万别和我说我的JDK是7.0的缘故,或者我用的Eclispe  老师用的是MyEclipse!

我觉得老师的能通过很神奇 因为因为字节码也是对象,是对象就有不同类型
这就好比让一个
Sring s = "abc"
Person p;
sop(s == p);//一样


QQ截图20140224221907.png (19.37 KB, 下载次数: 5)

QQ截图20140224221907.png

作者: kkopopo    时间: 2014-2-24 22:22
本帖最后由 kkopopo 于 2014-2-24 22:26 编辑

楼层不小心占了,再次编辑把我的疑问汇集到主贴了!
作者: 郝大龙0104    时间: 2014-2-25 01:12
我用Myeclipse10 编写的
  1. public class Demo2 {
  2.         public static void main(String[] args) {
  3.                 int[] a = {2,4};
  4.                 String[] str = {"hao","dd"};
  5.                 System.out.println(a.getClass()==str.getClass());
  6.                
  7.         }
  8. }
复制代码

最后的也是错误的下面是错误的原因
Incompatible operand types Class<capture#1-of ? extends int[]> and Class<capture#2-of ? extends String[]>
作者: 戚兴海    时间: 2014-2-25 01:19
这个问题之前有人问过的,编译器报的错误是Incompatible operand types Class<capture#5-of ? extends int[]> and Class<capture#6-of ? extends String[]>,也就是两边是不同的泛型类型的class类型数据,jdk1.5之后不同泛型类型的同一数据被视为不兼容的内容,所以a1和a3的比较也会报错。
解决办法就是两边之前都加上一个(Object)就可以了。
或者将编译级别改成jdk1.4版本的也可以。




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