Java 泛型 lt;super T>中 super 怎么 理解?与 extends 有何不同

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 泛型 lt;super T>中 super 怎么 理解?与 extends 有何不同相关的知识,希望对你有一定的参考价值。

例如public static <T> void add(List<T> l1,List<? super T> l2)
//那么l2中的元素就只能是泛型T的父类
//例如l1的类型是List<String>
//那么l2中的元素就可以是List<Object>
//因为Object类是String的父类,可以不一定是直接父类,也可能是父类的父类
//而l2就不能设定为List<Integer>,因为Integer不是String的父类。与String没有继承 关系



如果该方法是public static <T> void add(List<T> l1,List<? super T> l2)
//那么List<> ,中括号里面指定的元素就只能是T的子类型,与super刚好相反



当然,<? super T>和<? extends T>都能指定与T相同的类型,例如两种情况都可以指定l1和l2都为List<String>
参考技术A 继承于父类的

~
~
~
~
参考技术B 例如publicstaticvoidadd(Listl1,List

以上是关于Java 泛型 lt;super T>中 super 怎么 理解?与 extends 有何不同的主要内容,如果未能解决你的问题,请参考以下文章

Java泛型的应用——T extends Comparable<? super T;

Java泛型<? extends T>和<? super T>

JAVA泛型之<? extends T>:(通配符上限)和<? super T>(通配符下限)

java中泛型限定<? extends Comparable<? super T>> 和 <T extends Comparable<? super T>&g

浅显理解Java泛型的super和extends

Java泛型疑问之super和extendS