Я натрапив на це питання у вікторині,
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 змінна 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"