黑马程序员技术交流社区
标题:
高新技术24,有一点儿看不懂,求教
[打印本页]
作者:
贾旭
时间:
2012-5-24 13:58
标题:
高新技术24,有一点儿看不懂,求教
本帖最后由 贾旭 于 2012-5-24 13:59 编辑
public static void demo() {
// TODO Auto-generated method stub
int[] a1 = new int[3];
int[] a2 = new int[4];
int[][] a3 = new int[2][3];
String [] a4 = new String[4];
System.out.println();
System.out.println(a1.getClass() == a2.getClass());
System.out.println(a1.getClass() == a4.getClass());//这里总是报错
System.out.println(a4.getClass().getSuperclass().getName());
}
复制代码
为什么报:Incompatible operand types Class<capture#3-of ? extends int[]> and Class<capture#4-of ? extends String[]>错呢。求指教
作者:
张文建
时间:
2012-5-24 14:52
//
每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象
System.out.println(a1.getClass() == a2.getClass());//true
System.out.println(a1.getClass() == a4.getClass());false元素类型不同,
a1和a4类型不一样
System.out.println(a1.getClass() == a3.getClass());false数组维数不同
作者:
闾丘日月
时间:
2012-5-24 15:02
于数组类型的变量编译器在编译时,其实已经知道类型了。也就是说,编译器认为这2个类型是不一样的。根本没有比较的需要。
对于总是不成立的比较,其实是没有意义的。这个编译错误是 JDK 1.6的新功能
而张老师使用的恰好是JDK1.5的版本,楼主使用的是1.6版本。
这个问题我也不知道,我是百度的,引用了这位哥们博文的解释,lz需要了解的更清楚可以参见
http://blog.csdn.net/wizardmly/article/details/6084625
作者:
贾旭
时间:
2012-5-24 15:14
闾丘日月 发表于 2012-5-24 15:02
于数组类型的变量编译器在编译时,其实已经知道类型了。也就是说,编译器认为这2个类型是不一样的。根本没有 ...
对啊。我也很郁闷,代码一模一样。就是不对。我都无语了。原来是JDK版本的问题,明白原理就好了,我也没有必要这上面纠结。:lol
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2