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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 12560zhang 于 2014-3-11 21:32 编辑

如图所示
System.out.println(a1.getClass() == a4.getClass());
System.out.println(a1.getClass() == a3.getClass());
这两条代码在我的eclipse上编译都没通过,视频中怎么运行成功了,求解???

QQ截图.jpg (49.98 KB, 下载次数: 31)

QQ截图.jpg

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

4 个回复

倒序浏览
这是因为泛型的问题了,
a1.getClass()返回的是Class<? extends int[]> ,也就是Class<int[]>
a3.getClass返回的是Class<? extends int[][]> ,也就是Class<int[][]>
a4的getClass()返回的是Class<? extends String[]> ,也就是Class<String[]>
如果这么写就不会出问题了,
  1. int[] a1 = new int[2];

  2. int[][] a2 = new int[2][3];

  3. String[] a3 = new String[]{"1", "2", "3"};

  4. Class clazz1 = a1.getClass();
  5. Class clazz2 = a2.getClass();
  6. Class clazz3 = a3.getClass();
  7. System.out.println(clazz1 == clazz2);
  8. System.out.println(clazz1 == clazz3);
复制代码



评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
房建斌 发表于 2014-3-10 08:15
这是因为泛型的问题了,
a1.getClass()返回的是Class

这样写不会报错了,为什么图片中的代码在视频中运行通过了?
回复 使用道具 举报
12560zhang 发表于 2014-3-10 08:46
这样写不会报错了,为什么图片中的代码在视频中运行通过了?

你看看是不是因为张老师用的是jdk1.4那时候没有泛型。估计是这个原因了
回复 使用道具 举报
房建斌 发表于 2014-3-10 08:15
这是因为泛型的问题了,
a1.getClass()返回的是Class

我运行的时候也出现同样的问题,根据这个方法修改,就运行成功了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马