Java null是否具有对象类型?

Java null是否具有对象类型?,java,Java,为什么这个输出是:“内部字符串参数方法”?不是空的“对象”类型吗 将调用最具体的匹配方法。更多信息请点击此处: 是的,但是null也是字符串类型和所有其他类型,因此它选择最具体的调用方法。更具体地说,nullliteral将调用字符串版本,原因见其他答案 另一方面: class A { void printVal(String obj) { System.out.println("inside String argument method"); }

为什么这个输出是:“内部字符串参数方法”?不是空的“对象”类型吗


将调用最具体的匹配方法。更多信息请点击此处:


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

更具体地说,
null
literal将调用字符串版本,原因见其他答案

另一方面:

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
以外的任何类型。我刚刚尝试添加第三个
printVal
重载,
printVal(Integer obj)
,看看会发生什么。现在
a.printVal(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);
    }
}