Я столкнулся с этим вопросом в викторине,
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);
}
}
Вывод этой программы - "String Version". Но я не мог понять, почему передача 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"