考虑静态实用程序中的通用min
方法,该方法用于返回集合中的最小元素。为什么我们需要将其声明为
public static <T extends Comparable<? super T>> T min(Set<? extends T> producerSet)
如果我们将其声明为
,会出现什么问题public static <T extends Comparable<T>> T min(Set<? extends T> producerSet)
类型参数中的通配符类型给我的灵活性是什么?
答案 0 :(得分:0)
这涵盖了T是Comparable的实现者的子类的情况。请考虑以下事项:
public static class A implements Comparable<A> {
public int compareTo(A o) {
return 0;
}
}
public static class B extends A {}
public static <T extends Comparable<T>> T min(Set<? extends T> producerSet) {
return null;
}
public static void main(String[] args) {
Set<B> set = new HashSet<B>();
min(set); // incompatible with method signature
}