黑马程序员技术交流社区
标题:
数组的反射
[打印本页]
作者:
kkopopo
时间:
2014-2-24 22:14
标题:
数组的反射
本帖最后由 kkopopo 于 2014-2-24 22:28 编辑
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() == a4.getClass());
复制代码
最后两句代码编译不通过 报错类型不匹配
可是在黑马张老师视频中教学过程中编译通过了?
why?
视频中截图代码! 千万别和我说我的JDK是7.0的缘故,或者我用的Eclispe 老师用的是MyEclipse!
我觉得老师的能通过很神奇 因为因为字节码也是对象,是对象就有不同类型
这就好比让一个
Sring s = "abc"
Person p;
sop(s == p);//一样
QQ截图20140224221907.png
(19.37 KB, 下载次数: 5)
下载附件
2014-2-24 22:23 上传
作者:
kkopopo
时间:
2014-2-24 22:22
本帖最后由 kkopopo 于 2014-2-24 22:26 编辑
楼层不小心占了,再次编辑把我的疑问汇集到主贴了!
作者:
郝大龙0104
时间:
2014-2-25 01:12
我用Myeclipse10 编写的
public class Demo2 {
public static void main(String[] args) {
int[] a = {2,4};
String[] str = {"hao","dd"};
System.out.println(a.getClass()==str.getClass());
}
}
复制代码
最后的也是错误的下面是错误的原因
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