null如何在此代码中工作?

sun*_*tty 3 java

null如何在此代码中工作,为什么不打印对象?

class Test1{
    public void doStuff(Object o){
    System.out.println("In Object");
}

    public void doStuff(String o){
        System.out.println("In String");
    }
}

public class TTest {
    public static void  main(String args[]){    
        Test1 t = new Test1();
        t.doStuff(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

在字符串中

Kep*_*pil 6

Java总是会尝试使用最具体的方法版本.

自召唤

t.doStuff(null);  
Run Code Online (Sandbox Code Playgroud)

适用于这两种方法

t.doStuff(Object o)
t.doStuff(String o)
Run Code Online (Sandbox Code Playgroud)

Java将选择最具体的方法描述,即

t.doStuff(String o)
Run Code Online (Sandbox Code Playgroud)