通用方法Java

roy*_*roy 4 java generics methods

这两种通用方法有什么区别吗?

  1. public static <E> void fill(ArrayList<? extends Comparable<? super E>> a)

  2. public static <E extends Comparable<? super E>> void fill2(ArrayList<E> a)

Raf*_*ter 5

是的,绑定E是不同的.鉴于一些

class Foo implements Comparable<Foo>
Run Code Online (Sandbox Code Playgroud)

还有一些

class Bar implements Comparable<Foo> // Not Bar!
Run Code Online (Sandbox Code Playgroud)

Foo对于两者来说都是一个合法的论据fill,fill2因为第二种方法需要E = Foo扩展ComparableComparable实现这种实现E = Foo.这是无法实现的Bar.