黑马程序员技术交流社区
标题:
基础加强--数组与Object的关系及其反射类型中的问题
[打印本页]
作者:
optimisticpig
时间:
2014-5-9 21:14
标题:
基础加强--数组与Object的关系及其反射类型中的问题
int[] a1 = new int[3];
int[] a2 = new int[4];
int[][] a3 = new int[2][3];
String[] a4 = new String[3];
System.out.println(a1.getClass() == a2.getClass());
System.out.println(a1.getClass() == a4.getClass());
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)
下载附件
2014-5-9 21:13 上传
作者:
张耀扬
时间:
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 编辑
对于这个问题啊,张老师明明就可以编译同,我这里也不行啊,使用这样就可以:
int[] a1 = new int[3];
int[] a2 = new int[4];
int[][] a3 = new int[2][3];
String[] a4 = new String[3];
System.out.println(a1.getClass()== a2.getClass());
System.out.println(a1.getClass().equals( a4.getClass()));
System.out.println(a1.getClass().equals(a3.getClass()));
复制代码
我个人觉得得到的并不是一个二进制文件,只是一个可执行文件,只有加载进内存的时候才被JVM加载成为二进制文件,所以这里不能比较。因为类型不匹配。当然这只是我个人大胆的猜想
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2