天下文章一大抄, 继续抄
来源: 百度上搜索"泛型 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的子类添加进来,那都没问题,都可以;