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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求解释?泛型限定上限和下限的区别和特点?他们各自的用途是什么?就是什么时候,要用下限,什么时候要用上限?求总结举例说明

2 个回复

倒序浏览
<? extebds E>表示通配符存在上限,E就是这个通配符的上限(upper bound),E所有E的子类都可以被接收
               Collection 集合中的boolean addAll(Collection<? extends E> c)方法就用的是此方法,要求指定Collection中的元素必须都为E所有E的子类,
               这种用法主要与多态相关,
<? super E>表示通配符有下限,E就是这个通配符的下限(upper bound),E所有E的父类都可以被接收,直至Object。
               而工具类Collections中的public static <T> boolean addAll(Collection<? super T> c,T... elements)方法就用的是此方法,<? super E>还有往往在比较器中用的比较
              多,因为比较的话,比较的数据往往都是比较父类中的数据。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 韩新凯 于 2012-5-14 15:33 编辑

比如:implements Comparator
API里面关于Comparator(<? super E>)就是这样定义的。
加入你有两个类Father,Son  extends Father
当你implenents这个接口的时候:
class Test implements Comparator{Father}
调用的时候可以传入Son,Father
class Test implements Comparator{Son}
调用的时候只能传入Son。
当初学的时候也是自己试出来的。建议楼主多试试,我当时也问了一个这样的问题,别人给回答的,有的回答是不对的,有些看不懂。


评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

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