Перегрузка в Java и множественная диспетчеризация
У меня есть коллекция (или список или список массивов), в который я хочу поместить как строковые значения, так и двойные значения. Я решил сделать это коллекцией объектов и использовать перегрузку полиморфизма OND, но я сделал что-то не так.
Я провожу небольшой тест:
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?!?!?
}
}
В тесте кажется, что тип аргумента определяется во время компиляции, а не во время выполнения. Почему это?
Этот вопрос связан с:
Полиморфизм против переопределения против перегрузки
Попробуйте описать полиморфизм как можно проще
РЕДАКТИРОВАТЬ:
Хорошо, метод для вызова определяется во время компиляции. Есть ли обходной путь, чтобы избежать использованияinstanceof
оператор?