我对数字方法的以下选项感到困惑
int abs(int) long abs(long) double abs(double)
编号abs(数字)
哪种方法最好,这两种方法有什么区别?
如果我们使用父类引用,则不需要重载。是否有使用第二种风格的问题。
什么时候我们应该选择第一种方法,何时选择第二种方式?
答案 0 :(得分:2)
主要区别:您的选项1适用于原始类型。
而选项2适用于引用类型(又名对象)。
当然,由于自动装箱和拆箱,您可能只能使用该abs(Number)
方法的一个实现。但是:请记住,拳击并不是免费的!
换句话说:选项1允许您进行更精细的粒度控制 - 您知道您的方法实际上是使用int,long,float,double调用的。缺点是您可能开始复制代码。
选项2可能在没有重复代码的情况下工作 - 但它在运行时有一定的价格标签,因为每次和任何时候用一个原始类型值调用该方法......将创建一个新的Number对象(只是为了抛出)之后离开)。
答案 1 :(得分:0)
我会借用蟒蛇禅并说 显式优于隐式
所以第一个重载选项更好。 这样可以在不使用条件的情况下进行更精细的控制
此外,它避免了编译器创建对象,因此我认为它更快