3

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

输出:

在字符串中

4

2 回答 2

6

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

自从打电话

t.doStuff(null);  

适用于这两种方法

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

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

t.doStuff(String o)
于 2013-04-12T10:36:06.167 回答
1

作为String的子类Object,Java 将尝试使用适用的层次结构中最靠下的类。null在这里可以解释为两者之一,因此使用该String方法。

于 2013-04-12T10:37:18.563 回答