A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李杰鹏 初级黑马   /  2012-12-23 12:22  /  1196 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李杰鹏 于 2012-12-23 19:28 编辑

int [] a1 = new int[2];
int [] a2 = new int[3];
int[][] a3 = new int[2][3];
String [] a4 = new String[2];
System.out.println(a1.getClass() == a2.getClass());
System.out.println(a1.getClass()==a3.getClass());//出错 Incompatible operand types Class<capture#8-of ? extends int[]> and Class<capture#9-of ? extends int[][]>
System.out.println(a1.getClass()==a4.getClass());//出错 Incompatible operand types Class<capture#10-of ? extends int[]> and Class<capture#11-of ? extends String[]>

为什么我照老师的步骤走,到我编译器就说有错误啊?那为什么老师的不报错呢?晕。。。
照理来说,每一种类的字节码对应下来应该只是Class类的一个实例对象,那为什么还要对Class类定义泛型呢?比如String.class 的类型是Class<String>,这样有什么意义?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

5 个回复

倒序浏览
System.out.println(a1.getClass()==a3.getClass());
  int [] a1         int[][] a3
一个是 ,一维数组,一个是二维数组!两个比较系统不兼容的!
System.out.println(a1.getClass()==a4.getClass());//
int [] a1    String [] a4  
一个是 int  一个是 String ,虽然,数组,长度相等,但是类型不一样啊!
所以系统也是,不兼容的!所以,可能是你打错了!

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
建立,LZ, 下载一个Eclipse  , 进行程序编译!这样,会提示错误,方便修改!

点评

不会吧  发表于 2012-12-24 21:53
回复 使用道具 举报
应该是二者之间不兼容出现的吧
回复 使用道具 举报
已用Eclipse测试,代码没问题
打印结果:true false false
a1,a2都是一维整数数组,所以class对象也相同
a3是二维的,a4是字符串数组,所以a3 != a4
数组维数不一样,数据类型不一样,class对象都不会相同
回复 使用道具 举报
恩恩..谢谢了..我懂了..感谢..
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马