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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李会成 中级黑马   /  2013-2-16 16:45  /  2033 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李会成 于 2013-2-18 11:34 编辑
  1. public static void iteratorToou(List< ? extends Prerson > arr)      //  为什么我这里写泛型限制会出问题
  2.         {
  3.                                             Iterator<rerson> it = arr.iterator();
  4.                                             while (it.hasNext()) ;
  5.                                   Prerson p = it.next();
  6.                                                            System.out.println(p.getName() + "......" + p.getAge();
  7.          }
  8.         }
  9. }
  10.      1.(List< ? extends Prerson > arr)   我在这里写泛型限定,为什么会报错,

  11.       类型不匹配:不能从 Iterator<capture# 1- of  ? extends Prerson> 转换为 Iterator<rerson>

  12.     2.求高人解释一下  这个泛型限定  看视频没有看懂~

  13.    public static <T extends Comparable<? super T>> void sort(List<T> list)
复制代码

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

1 个回复

正序浏览
1.iterator中的泛型限定应该和List<? extends Person>一致,因为List中存储的元素应该是Person的子类,那么
取出List元素用iterator的泛型限定也应该是Person的子类。
2.这是一个泛型方法,<T extends Comparable<? super T>>说明T应该是一个实现了Comparable接口的类,并且
从Comparable<? super T>可以得出,Comparable接口可以比较T类型的父类,比较的范围更大。
举个例子你就明白了:
比方说,你想往List集合中放入Student,就以年龄作为排序比较规则吧,这时T不就是Student了吧,而Student又是Person的子类,
所有人都可以用年龄做比较,所以Comparable接口的泛型就可以写成Person
这不就是Student实现了Comparable接口,而Comparable接口可以接受Student父类也就是Person,即该方法
public static <T extends Comparable<? super T>> void sort(List<T> list)
就像
public static <Student extends Comparable<Person super Student>> void sort(List<Student> list)

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

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