Me encontré con esta pregunta en un cuestionario,
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 salida de este programa es "Versión de cadena". Pero no pude entender por qué pasar un nulo a un método sobrecargado eligió la versión de cadena. ¿Es null una variable de cadena que apunta a nada?
Sin embargo, cuando se cambia el código a,
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);
}
}
da un error de compilación que dice "El método método (StringBuffer) es ambiguo para el tipo MoneyCalc"