-2

我正在开发下面的课程..

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);
    }

}

现在在执行时调用字符串版本作为输出所以请在这里建议字符串被视为空,我们应该传递什么来调用对象版本。提前致谢

4

1 回答 1

4

在所有其他条件相同的情况下,将调用最具体的方法。JLS

15.12.2.5。选择最具体的方法

如果多个成员方法既可访问又适用于方法调用,则有必要选择一个为运行时方法分派提供描述符。Java 编程语言使用选择最具体方法的规则。

非正式的直觉是,如果第一个方法处理的任何调用可以传递给另一个方法而不会出现编译时类型错误,那么一个方法比另一个方法更具体。

question.method(null) 可能表示 theStringObject重载,但由于String比 更具体(更窄)ObjectString重载是被调用的方法。

于 2012-05-05T04:45:10.100 回答