黑马程序员技术交流社区

标题: 基础加强--数组与Object的关系及其反射类型中的问题 [打印本页]

作者: optimisticpig    时间: 2014-5-9 21:14
标题: 基础加强--数组与Object的关系及其反射类型中的问题
  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() == a3.getClass());
复制代码
最后两行会报错  Incompatible operand types Class<capture#10-of ? extends int[]> and Class<capture#11-of ? extends int[][]>


我的MyEclipse中的java是1.7版本的。

无标题.png (74.77 KB, 下载次数: 13)

无标题.png

作者: 张耀扬    时间: 2014-5-9 23:23
System.out.println(a1.getClass() == a4.getClass());
报错:Incompatible operand types Class<capture#3-of ? extends int[]> and Class<capture#4-of ? extends String[]>
System.out.println(a1.getClass() == a3.getClass());
报错:Incompatible operand types Class<capture#5-of ? extends int[]> and Class<capture#6-of ? extends int[][]>


这两个类型都不匹配啊,不能比较

作者: 龙健    时间: 2014-5-10 01:28
本帖最后由 龙健 于 2014-5-10 01:34 编辑

对于这个问题啊,张老师明明就可以编译同,我这里也不行啊,使用这样就可以:
  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().equals( a4.getClass()));
  7.          System.out.println(a1.getClass().equals(a3.getClass()));
复制代码

我个人觉得得到的并不是一个二进制文件,只是一个可执行文件,只有加载进内存的时候才被JVM加载成为二进制文件,所以这里不能比较。因为类型不匹配。当然这只是我个人大胆的猜想




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