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

关于泛型中<? 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的子类添加进来,那都没问题,都可以;