我们可以将test(null)传递给void display(Object o)// test是该类的对象

时间:2019-06-16 20:08:36

标签: java

为什么null会接受字符串的方法

class Test {
    public static void test(String s)
    {
        System.out.println("In String");
    }
    public static void test(Object o) {
        System.out.println("In Object");
    }

    public static void main(String args[]) {
        test(null);
    }
}

我希望结果是 在对象中 通常在((“”)

中传递字符串

2 个答案:

答案 0 :(得分:1)

Java将始终尝试调用方法的最特定版本。这是Java语言规范的一部分。

检查此答案以获取更多详细信息以及指向JLS的链接: https://stackoverflow.com/a/5229890/1426538

答案 1 :(得分:0)

请参见JLS § 15.12.2

  

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

     

非正式的直觉是,一种方法比   如果可以传递第一种方法处理的任何调用,则返回另一个   不会出现编译时错误的情况。