优先使用泛型方法

Posted lillill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优先使用泛型方法相关的知识,希望对你有一定的参考价值。

正如类可以是泛型的,方法也可以是泛型的。 对参数化类型进行操作的静态工具方法通常都是泛型
的。 集合中的所有算法方法(如 binarySearch sort )都是泛型的。

// Uses raw types - unacceptable! [Item 26]
public static Set union(Set s1, Set s2) {
Set result = new HashSet(s1);
result.addAll(s2);
return result;
}

  此方法可以编译但有两个警告:

Union.java:5: warning: [unchecked] unchecked call to
HashSet(Collection<? extends E>) as a member of raw type HashSet
Set result = new HashSet(s1);
^
Union.java:6: warning: [unchecked] unchecked call to
addAll(Collection<? extends E>) as a member of raw type Set
result.addAll(s2);

  要修复这些警告并使方法类型安全,请修改其声明以声明表示三个集合(两个参数和返回值)的元
素类型的类型参数,并在整个方法中使用此类型参数。 声明类型参数的类型参数列表位于方法的修饰符
和返回类型之间。 在这个例子中,类型参数列表是 <E> ,返回类型是 Set<E> 。 类型参数的命名约
定对于泛型方法和泛型类型是相同的

泛型类型一样,泛型方法比需要客户端对输入参数和返回值进行显式强制转换的方法更安
全,更易于使用。 像类型一样,你应该确保你的方法可以不用强制转换,这通常意味着它们是泛型的。
应该泛型化现有的方法,其使用需要强制转换。 这使得新用户的使用更容易,而不会破坏现有的客户端

以上是关于优先使用泛型方法的主要内容,如果未能解决你的问题,请参考以下文章

Java:Effective java学习笔记之 优先考虑泛型和泛型方法

Java:Effective java学习笔记之 优先考虑泛型和泛型方法

Effective Java7优先考虑泛型方法

尝试将优先级队列与这个泛型类一起使用时,我应该使用 Comparator 还是 Comparable ?

Go 何时使用泛型

Go 何时使用泛型