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