null如何在此代码中工作?

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

输出:

在字符串中

Java将始终尝试使用最具体的方法版本。

自打电话

 t.doStuff(null); 

适用于这两种方法

 t.doStuff(Object o) t.doStuff(String o) 

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

 t.doStuff(String o) 

由于StringObject的子类,因此Java将尝试使用适用的层次结构中最下层的类。 null可以解释为此处,因此使用String方法。