这两种通用方法之间有什么区别吗?
public static <E> void fill(ArrayList<? extends Comparable<? super E>> a)
public static <E extends Comparable<? super E>> void fill2(ArrayList<E> a)
答案 0 :(得分:5)
是的,E
的绑定是不同的。鉴于一些
class Foo implements Comparable<Foo>
和一些
class Bar implements Comparable<Foo> // Not Bar!
Foo
对于fill
和fill2
都是合法的论据,因为第二种方法需要E = Foo
来扩展Comparable
并拥有此Comparable
E = Foo
1}}实现为Bar
。 {{1}}无法满足此要求。