EffectiveJava学习笔记22:API设计建议、慎用重载

1.API设计建议

1.方法名称需风格一致

2.除非一系列的方法经常被一起调用,来提供快捷方式,否则不要提供快捷方式

3.避免过长的参数列表,避免同样类型的参数列表(参数数据不同,数量相同):参数太多记不住顺序、相同类型容易混乱。

4.对于参数类型,要优先用接口而不是类

5.对于boolean参数,优先使用两个元素的枚举类

 

2.慎用重载

之所以要慎用,主要是在一个类中使用多个重载方法,容易混乱,比如书中的案例:

public class CollectionClassifier {
    public static String classify(Set<?> s) {
        return "Set";
    }
    public static String classify(List<?> lst) {
        return "List";
    }
    public static String classify(Collection<?> c) {
        return "Unknown Collection";
    }
    public static void main(String[] args) {
        Collection<?>[] collections = { 
                new HashSet<String>(), 
                new ArrayList<BigInteger>(),
                new HashMap<String, String>().values() 
        };
        for (Collection<?> c : collections) {
            System.out.println(classify(c));
        }
    }
}

这个案例简要的想法:根据输入的参数不同,返回不同的类型输出。Set、List、和普遍性质的Collection   三种。

但是实际上,这里是都输出了:"Unknown Collection"。

为什么?因为重载混乱,Set类型和List类型,都被作为Collection参数了。

总结:永远不要两个具有相同参数数目的重载方法,如果一定要,那么请参数类型一定要明确的不同。

小知识点:调用哪个重载方法是在编译时做出决定的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值