黑马程序员技术交流社区

标题: 求解释?泛型限定上限和下限的区别和特点?求总结举例说明 [打印本页]

作者: HeiMaYSL    时间: 2012-5-14 13:37
标题: 求解释?泛型限定上限和下限的区别和特点?求总结举例说明
求解释?泛型限定上限和下限的区别和特点?他们各自的用途是什么?就是什么时候,要用下限,什么时候要用上限?求总结举例说明
作者: 廖理    时间: 2012-5-14 14:31
<? 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>还有往往在比较器中用的比较
              多,因为比较的话,比较的数据往往都是比较父类中的数据。
作者: 韩新凯    时间: 2012-5-14 15:32
本帖最后由 韩新凯 于 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。
当初学的时候也是自己试出来的。建议楼主多试试,我当时也问了一个这样的问题,别人给回答的,有的回答是不对的,有些看不懂。







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