我在一次测验中遇到了这个问题,
public class MoneyCalc {
public void method(Object o) {
System.out.println("Object Verion");
}
public void method(String s) {
System.out.println("String Version");
}
public static void main(String args[]) {
MoneyCalc question = new MoneyCalc();
question.method(null);
}
}
该程序的输出是“字符串版本”。但我无法理解为什么将 null 传递给重载方法会选择字符串版本。null 是一个指向空的字符串变量吗?
但是,当代码更改为,
public class MoneyCalc {
public void method(StringBuffer sb) {
System.out.println("StringBuffer Verion");
}
public void method(String s) {
System.out.println("String Version");
}
public static void main(String args[]) {
MoneyCalc question = new MoneyCalc();
question.method(null);
}
}
它给出了一个编译错误,说“方法方法(StringBuffer)对于MoneyCalc类型不明确”