【发布时间】:2014-12-07 23:23:15
【问题描述】:
这两种泛型方法有什么区别吗?
public static <E> void fill(ArrayList<? extends Comparable<? super E>> a)public static <E extends Comparable<? super E>> void fill2(ArrayList<E> a)
【问题讨论】:
这两种泛型方法有什么区别吗?
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 无法实现这一点。
【讨论】: