跟我学(Effective Java 2)第27条:优先考虑泛型方法

本文探讨了如何在Java编程中优先考虑使用泛型方法,以提高类型安全性和代码可读性。通过示例展示了如何将Collections的算法方法泛型化,以及如何利用类型推导简化代码。此外,还介绍了泛型方法的灵活性,如有限制的通配符类型,以及如何通过泛型静态工厂方法消除类型参数的冗余。最后,提到了泛型单例工厂模式在创建不可变对象时的应用。
摘要由CSDN通过智能技术生成

第27条:优先考虑泛型方法

就如类可以从泛型中受益一般,方法也一样。静态工具方法尤其适合于泛型化。Collections中所有“算法”方法是泛型化的。

publlic static Set union(Set s1, Set s2) {
    Set result = new HashSet(s1);
    result.addAll(s2);
    return result;
}

这个方法会出现两条警告,因为使用的是原生态类型。为了修正这些警告,使方法变成类型安全的,我们这里就可以用到泛型:

public static <E> Set<E> union(Set<E> s1, Set<E> s2) {
    Set<E> result = new HashSet<E>(s1);
    result.addAll(s2);
    return result;
}

至少对于简单的泛型方法而言,就是这么回事了。现在改方法编译时不会产生任何警告,并提供了类型安全性,也更容易使用。以下是一个执行该方法的简单程序。程序不包含装换,编译时不会有错误或者警告:

public static void main(String[] args){
    Set<String> guys =new HashSet<String>{
        Array.asList("Tom","Dick","Harry"));

    Set<String> stooges =new 

HashSet<String>{
        Array.asList("Larry","Moe","Cur
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值