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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public static void printAl(ArrayList<? extends Person> al)
  2.         {
  3.                 Iterator<? extends Person> it = al.iterator();

  4.                 while(it.hasNext())
  5.                         System.out.println(it.next().getName());//上面泛型改成<? super Student>后,不能调用getName方法
复制代码
这里这段代码,泛型使用<? extends Person>,老毕说使用<? super Student>是一样的,我发现使用super Student之后无法使用Person、Student类中的特有方法。
<? super Student>的意思是可以传入Student及其父类,结果导致传入的是Object类
需要对其类型强转后才能调用特有方法
  1. while(it.hasNext())
  2.                 {
  3.                         Person p = (Person)it.next();
  4.                         System.out.println(p.getName());
  5.                 }
复制代码



评分

参与人数 1技术分 +1 收起 理由
船长 + 1 心细,赞一个

查看全部评分

2 个回复

正序浏览
学习了,,,,,
回复 使用道具 举报
学习了~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马