我想知道这是否是有效的重载:
public class OverLoadingTest{
private void callFunction(Object object){
System.out.println("Printing Object");
}
private void callFunction(String string){
System.out.println("Printing String");
}
}
此外,因为有人问我这个问题。 如果我喜欢这个,
OverLoadingTest test = new OverLoadingTest();
test.callFunction(null);
会打印什么?
当然我的意见是它根本没有有效的重载。 所以第二部分没问题。
请通过一些解释告诉我这件事。
答案 0 :(得分:3)
调用具有最小通用参数的方法。因此,在您的情况下,它将是接受String
注意:如果2个类处于同一级别,那么您将收到模糊调用异常。例如,如果一种方法采用String
而另一种采用Exception
。
答案 1 :(得分:2)
If more than one member method is both accessible and applicable to a method
invocation, it is necessary to choose one to provide the descriptor for
the run-time method dispatch.
The Java programming language uses the rule that the most specific method is chosen.
中查看更多详情
String
或null
,则将调用String方法,并且将调用其他参数的类型Object
方法。String
的方法(例如Integer),则无法编译源,因为在{{1}的方法之间调用它是不明确的和String
因为它们是同一级别。