null是否具有对象类型?

时间:2010-10-13 05:17:34

标签: java

为什么这个输出:“内部String参数方法”?不是null“对象”类型?

class A {
    void printVal(String obj) {
        System.out.println("inside String argument method");
    }

    void printVal(Object obj) {
        System.out.println("inside Object argument method");
    }

    public static void main(String[] args) {
        A a = new A();
        a.printVal(null);
    }
}

3 个答案:

答案 0 :(得分:8)

将调用最具体的匹配方法。更多信息:

答案 1 :(得分:3)

是的,但null也是String类型和所有其他类型,因此它选择最具体的方法来调用。

答案 2 :(得分:1)

更具体地说,null 文字会调用字符串版本,原因可见其他答案。

另一方面:

class A {
    void printVal(String obj) {
        System.out.println("inside String argument method");
    }

    void printVal(Object obj) {
        System.out.println("inside Object argument method");
    }

    public static void main(String[] args) {
        A a = new A();
        Object myObj = null;
        a.printVal(myObj);
    }
}

将打印“内部对象参数方法”。我们会将myObj的类型设置为String以外的任何类型。