如何理解 Java 中的 lt;T extends Comparable<

Posted

tags:

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

参考技术A 例如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>

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;T extends Comparable<的主要内容,如果未能解决你的问题,请参考以下文章

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

Java - ? extends T 和 ? super T 理解

浅显理解Java泛型的super和extends

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

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

请教Java 大神一行代码:“<? extends T>”的用法是啥?