黑马程序员技术交流社区

标题: 关于基础加强__数组与Object的关系及其反射类型 [打印本页]

作者: 12560zhang    时间: 2014-3-10 08:06
标题: 关于基础加强__数组与Object的关系及其反射类型
本帖最后由 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, 下载次数: 28)

QQ截图.jpg

作者: 房建斌    时间: 2014-3-10 08:15
这是因为泛型的问题了,
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);
复制代码




作者: 12560zhang    时间: 2014-3-10 08:46
房建斌 发表于 2014-3-10 08:15
这是因为泛型的问题了,
a1.getClass()返回的是Class

这样写不会报错了,为什么图片中的代码在视频中运行通过了?
作者: 房建斌    时间: 2014-3-10 09:10
12560zhang 发表于 2014-3-10 08:46
这样写不会报错了,为什么图片中的代码在视频中运行通过了?

你看看是不是因为张老师用的是jdk1.4那时候没有泛型。估计是这个原因了
作者: 流年飞逝    时间: 2014-3-19 19:16
房建斌 发表于 2014-3-10 08:15
这是因为泛型的问题了,
a1.getClass()返回的是Class

我运行的时候也出现同样的问题,根据这个方法修改,就运行成功了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2