当参数为文本 null 值时,如何选择重载方法?
2022-08-31 10:35:41
我在一次测验中遇到了这个问题,
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类型是模棱两可的”