1

考虑静态实用程序中的通用min方法,该方法旨在返回 set 中的最小元素。为什么我们需要将其声明为

 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)

type 参数中的通配符类型在这里给了我什么灵活性?

4

1 回答 1

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
}
于 2013-03-10T02:11:15.913 回答