读书人

关于泛型中lt; extends Agt; 跟 lt; super A

发布时间: 2012-09-09 09:27:54 作者: rapoo

关于泛型中<? extends A> 和 <? super A>的差别

天下文章一大抄, 继续抄

?

来源:? 百度上搜索"泛型 super extends" , 出来一大堆 "泛型中super与extends的形象解释", 也不知道哪个是原创,也就不炒了,反正大家一搜索, 到处都是;

?

理解:

?

定义:

List<? extends A>? alist? = new ArrayList<TypeA>();

? 这个说明TypeA是 A的子类, 从alist中获取的元素,转换成A是没有问题的;

? 但是TypeA到底是A的哪一层子类, 这个就不知道了, 如果添加一个元素进去, 譬如

? alist.add(element):

???? 这个element和TypeA 的层次关系是否对就不知道了, 所以无法添加;

?

?

List<? super A> alist = new ArrayList<TypeA>();

??? 如果用了super来修饰,? 说明TypeA是A的父类, 所以只要是A的子类添加进来,那都没问题,都可以;

?

?

?

?

?

?

?

?

?

读书人网 >其他相关

热点推荐