Я узнал, что я могу использовать реальный тип объекта, чтобы определить, какой метод используется, например, так:
[...]
Object foo = new String("hello");
[...]
bla(foo);
void bla(String x){
}
void bla(Integer x){
}
Теперь он должен использовать метод bla(String x)
, но вместо этого я получаю компиляторошибка.Я знаю почему: потому что тип foo
в настоящее время Object
.Я не уверен, правильно ли я сейчас это делаю, но я так понял, что Java выберет метод по реальному типу (или конкретному типу), поэтому, если я уменьшу его до Object
, он выберет String
вместо этого, если не указан Object
Метод.
Или это единственный способ определить тип по if(foo instanceof xxx)
в методе void bla(Object x)?
PS: не поймите меня неправильнона этом: я не имею в виду, что я могу перегрузить методы, я имею в виду, что я хочу выбрать метод, основанный на реальном типе (не на определенном)!