第52条 慎用重载
-
使用重载机制比较安全而保守的策略是:永远不要导出两个具有相同参数数目的重载方法。如果方法使用可变参数(varargs),保守的策略是不要重载它
-
对于重载的这项限制并不麻烦,因为始终可以给方法起不同的名称而不使用重载机制
-
对于构造器,可以选择导出静态工厂
-
对于每一种重载方法,至少有一个对应的参数在两个重载方法中具有根本不同的类型,就不会产生迷惑。 在这种情况下主要的混淆根源就消除了
-
需要注意
List
的remove
方法,它有一个重载分别是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]
-
应该让更具体化的重载方法把调用转发给更一般化的重载方法
思考
- 重载一般是不会发生的,有的时候是不小心把方法名取成了一个已经存在的名字。避免不小心使用重载的方法,我一般是先在方法的实现里面写好调用,再把还没有声明的方法声明出来。这时候IDE会提醒你这个类里面已经声明的方法,所以在想方法名的时候就可以避开已经存在的名称了。
当然不是所有人都习惯先写出来没有声明过的方法,这个只是我自己的一个习惯
-
我们经常出现的重载就是像文章中提到的"具体化的重载方法把调用转发给更一般化的重载方法",这种重载是相对合理的
private void testMethod1() { testMethod1(true); } private void testMethod1(boolean needCreate) { }
网友评论