最佳答案
我在一次小测验中偶然发现了这个问题,
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 是指向虚值的 String 变量吗?
但是,当代码更改为,
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 类型是不明确的”