Je suis tombé sur cette question dans 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);
}
}
La sortie de ce programme est "String Version". Mais je n'ai pas pu comprendre pourquoi passer un null à une méthode surchargée a choisi la version chaîne. Null est-il une variable String pointant vers rien?
Cependant, lorsque le code est changé en,
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);
}
}
il donne une erreur de compilation en disant "La méthode méthode (StringBuffer) est ambiguë pour le type MoneyCalc"