我有两个使用通配符泛型的方法示例。
第一个例子:
public static <T extends Comparable> T findMax(List<T> list)
第二个例子:
public static <T extends Comparable<? super T>> T findMax(List<? extends T> list)
我想知道这两个例子是否多余。如果是,为什么?
最佳答案
这两个示例告诉您不同的事情,因此它们并不多余,它们提供了不同的信息并以不同的方式限制类型。
public static <T extends Comparable> T findMax(List<T> list)
在此示例中,您告诉您的 T
变量可以是实现或扩展 Comparable
的任何类型(如果它是类或接口(interface))
public static <T extends Comparable<? super T>> T findMax(List<? extends T> list)
在此示例中,您告诉 T
类型应该扩展可比较的类型,并且还告诉该类型必须是 T
的父类(super class)(在可比较的内部),但它可以是列表中 T
的子类型。
关于java - 这些通配符是多余的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57976922/