У меня естьметод Java переопределение/проблема интерфейса
interface FooI
class FooA implements FooI
class FooB implements FooI
class FooC implements FooI
Я написал класс «Handler», который имеет следующие методы
static double handle(FooA f)
static double handle(FooB f)
static double handle(FooI f)
и у меня есть функция, как следующее:
void caller(FooI f)
{
Handler.handle(f);
}
с f только известным как класс, реализующий FooI. Однако f является примером FooA
Вместо вызова метода для FooA вызывается метод FooI.
Когда я использую f.getClass(). GetName() Я получаю правильное имя класса (FooA).
Я смущен, потому что я ожидал, что наиболее подходящий метод будет вызван, а именно, для FooA.
Я хотел использовать метод FooI как резерв для обработки классов, которые могут быть реализованы позже, и я также хочу обрабатывать f, не имея одной большой функции, где я делаю instanceof проверяет все известные в настоящее время классы, реализующие мои интерфейс.
Что было бы хорошим подходом для этого?
Спасибо за дополнительные теги, Samuel :-) – Kage