Bu soruya bir testte rastladım,
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);
}
}
Bu programın çıktısı "Dize Sürümü" dür. Ancak, aşırı yüklenmiş bir yönteme bir null değerinin neden dize sürümünü seçtiğini anlayamadım. Null bir String değişkeni hiçbir şeyi işaret etmiyor mu?
Ancak kod olarak değiştirildiğinde,
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);
}
}
"Yöntem yöntemi (StringBuffer) MoneyCalc türü için belirsiz" diyen bir derleme hatası veriyor