Java 我们可以通过test(null)来作废display(Object o)//test是类的对象吗

Java 我们可以通过test(null)来作废display(Object o)//test是类的对象吗,java,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[

为什么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);
    }
}
我希望结果是好的 反对
由于字符串通常在

中传递,Java总是尝试调用方法的最特定版本。这是Java语言规范的一部分

有关更多详细信息和JLS的链接,请查看此答案: 请参见

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

非正式的直觉是,一种方法比另一种方法更具体 如果可以传递第一个方法处理的任何调用,则另一个 在没有编译时类型错误的情况下打开另一个


我猜是因为字符串是最具体的匹配?尝试添加另一个以数字为参数的方法,看看会发生什么。字符串是对象