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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ezreal 中级黑马   /  2014-8-7 17:47  /  1818 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static void printColl(ArrayList<? extends Person1> al)
  2.         {
  3.                 Iterator<? extends Person1> it = al.iterator();
  4.                 while(it.hasNext())
  5.                         System.out.println(it.next().getName());
  6.                        
  7.         }
复制代码
这段代码Iterator处有下面的错误提示,这是什么意思啊,帮忙看下



10 个回复

倒序浏览
秒沉啊,大神们在哪
回复 使用道具 举报
Iterator<? extends Person1> it = al.iterator();这种写法不对呗。改成 Iterator it = al.iterator();
回复 使用道具 举报

不对啊  操作的数据类型继承了Peron1啊
回复 使用道具 举报
Ezreal 发表于 2014-8-7 23:33
不对啊  操作的数据类型继承了Peron1啊

怎么不对了?编译、运行出错了?
回复 使用道具 举报
fantacyleo 发表于 2014-8-7 23:35
怎么不对了?编译、运行出错了?

因为这个方法传入的数据类型是ArrayList<? extends Person1> al  啊,那样写的话编译不行吧
回复 使用道具 举报
Ezreal 发表于 2014-8-7 23:37
因为这个方法传入的数据类型是ArrayList

不要想当然猜测,亲自运行一下。高新视频讲过的,非泛型引用变量可以指向泛型对象
回复 使用道具 举报
我在Eclipse上试了,还是提示一样的错误。不过我还没看到高新视频。。
回复 使用道具 举报
Ezreal 发表于 2014-8-7 23:49
我在Eclipse上试了,还是提示一样的错误。不过我还没看到高新视频。。

两种写法均编译通过并正常运行
  1. public static void printColl(ArrayList<? extends Person1> al)
  2. { Iterator it = al.iterator();
  3. while(it.hasNext())
  4.      ((Person1)it.next()).getName(); }
复制代码
  1. public static void printColl(ArrayList<? extends Person1> al)
  2.     {
  3.             Iterator<? extends Person1> it = al.iterator();
  4.             while(it.hasNext())
  5.                     it.next().getName();
  6.     }
复制代码


回复 使用道具 举报
fantacyleo 发表于 2014-8-8 00:01
两种写法均编译通过并正常运行

为什么我的不行,你用的是啥编译器
回复 使用道具 举报
Ezreal 发表于 2014-8-8 00:08
为什么我的不行,你用的是啥编译器

eclipse自带的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马