Mi sono imbattuto in questa domanda in un quiz,
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);
}
}
L'output di questo programma è "String Version". Ma non sono stato in grado di capire perché il passaggio di un valore nullo a un metodo sovraccarico ha scelto la versione stringa. Null è una variabile String che punta a nulla?
Tuttavia, quando il codice viene modificato in,
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);
}
}
dà un errore di compilazione che dice "Il metodo del metodo (StringBuffer) è ambiguo per il tipo MoneyCalc"