如果有人能在下面解释,那将是很棒的。为什么在下面的示例中调用print(String s)
方法而未调用print(Object o)
。
package com.example;
public class DemoTest {
public void print(Object o){
System.out.println("Object");
}
public void print(String s){
System.out.println("String");
}
public static void main(String[] args) {
DemoTest dt = new DemoTest();
dt.print(null);
}
}
答案 0 :(得分:1)
取自Strange Java null behavior in Method Overloading
“那是因为String类从Object扩展,因此更具体到Object。因此,编译器决定调用该方法。记住,编译器总是选择最具体的方法来调用。”