-1

我试图深入了解何时编写泛型方法与非泛型方法。Collection 接口和 Collections 帮助器类都具有addAll()方法,尽管具有不同的签名,并且前者不是泛型方法,而后者是泛型方法

addAll()收藏中的签名:

  boolean addAll(Collection<? extends E> c);

addAll()集合中的签名:

 @SafeVarargs
    public static <T> boolean addAll(Collection<? super T> c, T... elements){}

那么作为一般规则,什么时候适合编写泛型和非泛型方法?

编辑:我对泛型方法一词的理解是,在方法的返回类型之前,它将在尖括号中具有类型参数或逗号分隔的类型参数列表。如果定义不正确,请纠正我。

4

2 回答 2

0

我认为你应该只使用泛型方法。如果你使用泛型方法/容器,你的代码是类型安全的。Collection 和 Collections 类保留一些“非泛型”方法只是为了提供向后兼容性。您可以阅读“Effective Java - 第二版”(由 Joshua Bloch 撰写)第 23 项“不要在新代码中使用原始类型”,您就会明白为什么使用泛型方法更好。

于 2014-08-10T19:56:50.287 回答
0

首先,您需要了解它Collections只是一个具有用于操作Collection接口实例的静态方法的具体类。因此,Collections 类不是泛型的,但它具有许多泛型方法来处理本身可能是泛型的静态方法的参数

实际上,说两者都是泛型方法。前者是泛型类的泛型方法,而后者只是泛型方法,而不是整个类的泛型。

第二种情况的参数中的 super 关键字只是允许向其中添加元素。如果它是扩展特定类型的任何类型的集合,那么您将无法添加元素

于 2014-08-10T19:57:57.323 回答