我正在开发以下课程。
public class Test1
{
public void method(Object o)
{
System.out.println("Object Verion");
}
public void method(String s)
{
System.out.println("String Version");
}
public static void main(String args[])
{
Test1 question = new Test1();
//question.method(question);
question.method(null);
}
}
现在执行它会调用字符串版本作为输出所以请告知这里字符串被视为null,我们应该传递什么来调用对象版本。提前谢谢
答案 0 :(得分:4)
所有其他条件相同,将调用最具体的方法。来自the JLS:
15.12.2.5. Choosing the Most Specific Method
如果多个成员方法都可访问且适用于a 方法调用,有必要选择一个提供 运行时方法调度的描述符。 Java编程 language使用选择最具体方法的规则。
非正式的直觉是一种方法更具体 如果可以传递第一个方法处理的任何调用,则为另一个 没有编译时类型错误的另一个。
question.method(null)
可以表示String
或Object
重载,但由于String
比Object
更具体(更窄) },String
重载是被调用的方法。