Sobrecarga en Java y despacho múltiple
Tengo una colección (o lista o lista de matriz) en la que quiero poner valores de cadena y valores dobles. Decidí convertirlo en una colección de objetos y usar sobrecarga y polimorfismo, pero hice algo mal.
Realizo una pequeña prueba:
public class OOP {
void prova(Object o){
System.out.println("object");
}
void prova(Integer i){
System.out.println("integer");
}
void prova(String s){
System.out.println("string");
}
void test(){
Object o = new String(" ");
this.prova(o); // Prints 'object'!!! Why?!?!?
}
public static void main(String[] args) {
OOP oop = new OOP();
oop.test(); // Prints 'object'!!! Why?!?!?
}
}
En la prueba parece que el tipo de argumento se decide en tiempo de compilación y no en tiempo de ejecución. ¿Porqué es eso
Esta pregunta está relacionada con:
Polymorphism vs Overriding vs Overloading
Intenta describir el polimorfismo tan fácil como puedas
EDITAR
Ok, el método a llamar se decide en tiempo de compilación. ¿Hay alguna solución alternativa para evitar el uso deinstanceof
operador?