У меня есть интерфейс (так называемый Subject
), который имеет следующий метод:Переопределение метод с полиморфными аргументами
public void addObserver(Observer o);
Я тогда другой интерфейс, который расширяет Subject
называется TimerSubject
. Этот интерфейс является более конкретной версией Subject
, используемой для синхронизации. В нем есть несколько других разных методов.
Существует также два соответствующих интерфейса: Observer
и TimerObserver
. TimerObserver
extends Observer
.
Когда класс реализует TimerSubject
, он должен переопределить метод addObserver()
с интерфейса Subject
. Это выглядит следующим образом:
@Override
public void addObserver(**Observer e**) {
observers.add(e);
}
Проблема заключается в том, мне нужен способ, чтобы принять TimerObserver
вместо Observer
, ведьма будет выглядеть следующим образом:
@Override
public void addObserver(**TimerObserver e**) {
observers.add(e);
}
Это не работает, так как аргументы не совпадают с аргументами переопределенного метода.
Так есть способ переопределить метод с аргументами, которые являются полиморфными?
Вы можете использовать дженерики –