Effective Java - 慎用重载

第52条 慎用重载

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

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

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

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

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

    public static void main(String[] args) {
      List 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 - 慎用重载)