Ich bin auf diese Frage in einem Quiz gestoßen,
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);
}
}
Die Ausgabe dieses Programms ist "String Version". Aber ich konnte nicht verstehen, warum das Übergeben einer Null an eine überladene Methode die String-Version auswählte. Ist null eine String-Variable, die auf nichts zeigt?
Wenn der Code jedoch in geändert wird,
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);
}
}
Es wird ein Kompilierungsfehler ausgegeben, der besagt: "Die Methodenmethode (StringBuffer) ist für den Typ MoneyCalc nicht eindeutig."