Java的通用方法

4

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

  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)


这两种方法的主要区别在于第二个方法使用了泛型限定符来限制允许传递给方法的参数类型。它要求传递的参数类型必须是可比较的,并且该类型必须实现Comparable接口。而第一个方法则没有这样的限制,可以传递任何类型的ArrayList作为参数。
1个回答

5

是的,E的绑定是不同的。考虑到一些。

class Foo implements Comparable<Foo>

and some

class Bar implements Comparable<Foo> // Not Bar!
<就是指> Foo作为第二个方法的参数,在实现E = Foo继承自Comparable,并将该Comparable实现作为E = Foo时,可以被fillfill2同时使用。而Bar无法满足这一要求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接