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

  • 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将是fillfill2的合法参数,因为第二种方法要求E = Foo扩展Comparable并使此Comparable实现为E = Foo。这是Bar无法实现的。

    08-18 11:03
    查看更多