美文网首页
Effective Java - 慎用重载

Effective Java - 慎用重载

作者: DZQANN | 来源:发表于2022-07-29 20:38 被阅读0次

    第52条 慎用重载

    1. 使用重载机制比较安全而保守的策略是:永远不要导出两个具有相同参数数目的重载方法。如果方法使用可变参数(varargs),保守的策略是不要重载它

    2. 对于重载的这项限制并不麻烦,因为始终可以给方法起不同的名称而不使用重载机制

    3. 对于构造器,可以选择导出静态工厂

    4. 对于每一种重载方法,至少有一个对应的参数在两个重载方法中具有根本不同的类型,就不会产生迷惑。 在这种情况下主要的混淆根源就消除了

    5. 需要注意Listremove方法,它有一个重载分别是remove(E)remove(int)。如果一个List<Integer>调用了remove(int)

      public static void main(String[] args) {
        List<Integer> list = new ArrayList<>(List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
        list.remove(2);
        System.out.println(list);
      }
      
      >>> [1, 2, 4, 5, 6, 7, 8, 9, 10]
      
    6. 应该让更具体化的重载方法把调用转发给更一般化的重载方法

    思考

    1. 重载一般是不会发生的,有的时候是不小心把方法名取成了一个已经存在的名字。避免不小心使用重载的方法,我一般是先在方法的实现里面写好调用,再把还没有声明的方法声明出来。这时候IDE会提醒你这个类里面已经声明的方法,所以在想方法名的时候就可以避开已经存在的名称了。
    image.png

    当然不是所有人都习惯先写出来没有声明过的方法,这个只是我自己的一个习惯

    1. 我们经常出现的重载就是像文章中提到的"具体化的重载方法把调用转发给更一般化的重载方法",这种重载是相对合理的

      private void testMethod1() {
        testMethod1(true);
      }
      
      private void testMethod1(boolean needCreate) {
      
      }
      

    相关文章

      网友评论

          本文标题:Effective Java - 慎用重载

          本文链接:https://www.haomeiwen.com/subject/ovjhwrtx.html