这两种通用方法之间有什么区别吗?
public static <E> void fill(ArrayList<? extends Comparable<? super E>> a)
public static <E extends Comparable<? super E>> void fill2(ArrayList<E> a)
最佳答案
是的,E
的绑定是不同的。给一些
class Foo implements Comparable<Foo>
还有一些
class Bar implements Comparable<Foo> // Not Bar!
Foo
将是fill
和fill2
的合法参数,因为第二种方法要求E = Foo
扩展Comparable
并使此Comparable
实现为E = Foo
。这是Bar
无法实现的。