就如类可以从泛型中收益一般,方法也一样。静态工具方法尤其适合于泛型化。collections中的所有“算法”方法(例如binarysearch ,sort)都泛型化了
编写泛型方法与编写泛型类相似。例如下面这个方法,它返回两个集合的联合:
这个方法可以编译,但是有两个警告,
1.hashSet(Collections<? extends E>) as a member of raw type hashSet
2.addAll(Collections<? extends E>) as a member of raw type Set
为了修正警告,使方法变成类型安全的,要将方法声明修改为一个类型参数,表示这三个集合的元素类型(两个参数及一个返回值),并在方法中使用类型参数。声明类型参数的类型参数列表,处在方法的修饰符及其返回类型之间,修改后的代码如下:
public static<E> Set<E> union (Set<E> s1,Set<E> s2){
Set<E> result = new HashSet<E>(s1);
result.addAll(s2);
return result;
}
网友评论