为什么这个输出:“内部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);
}
}
答案 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
以外的任何类型。