gpt4 book ai didi

java - 我应该使用对象来避免方法重载还是方法重载更好?

转载 作者:行者123 更新时间:2023-11-29 10:03:25 25 4
gpt4 key购买 nike

我有两个接口(interface)结构。

我的界面1

public interface MyInterface1{

public Object SUM(Object O,Object P);

}

我的界面2

public interface MyInterface2{

public int SUM(int O,int P);
public double SUM(int O,double P);
public double SUM(double O,double P);
public double SUM(double O,int P);

}

哪种设计方法可以更好地实现接口(interface)以保持代码效率?

最佳答案

第二种方法(重载)更受欢迎,因为它包含强类型的方法签名。

考虑以下代码。

public class InterfaceImpl implements MyInterface2{

public Object SUM(Object O,Object P){
//Really what can I do here without casting?

/* If I have to cast, I might as well define
types in the method signature, guaranteeing
the type of the arguments
*/

//Lets cast anyway
return (Integer) O + (Integer) P;
}

public static void main(String[] args) throws ParseException {
System.out.println(SUM(1,2)); //Excellent Returns 3
//Yikes, valid arguments but implementation does not handle these
System.out.println(SUM(true,false)); //Class cast exception
}
}

结论

随着该方法需要处理的类型越来越多,实现将被迫在进行必要的转换之前执行类型检查。理论上,每个扩展 Object 的类都需要进行类型检查,因为方法签名只限制类型的参数。由于参数是对象,因此将有无数种类型需要检查,这是不可能的。

通过使用重载方法,您可以表达方法的意图并限制允许的类型集。这使得编写方法的实现变得更加容易和易于管理,因为参数将是强类型的。

关于java - 我应该使用对象来避免方法重载还是方法重载更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15922069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com