Я задавал этот вопрос раньше, но у меня была ошибка в коде, которую заметило большинство людей, а не сама проблема.
В любом случае, я пытаюсь переопределить метод интерфейса в классе. Однако я хочу, чтобы тип параметра в методе переопределения был подклассом типа параметра, определенного в методе переопределения.
Интерфейс:
public interface Observer {
public void update(ComponentUpdateEvent updateEvent) throws Exception;
}
В то время как класс, который переопределяет этот метод:
public class ConsoleDrawer extends Drawer {
//...
@Override
public void update(ConsoleUpdateEvent updateEvent) throws Exception {
if (this.componentType != updateEvent.getComponentType()) {
throw new Exception("ComponentType Mismatch.");
}
else {
messages = updateEvent.getComponentState();
}
}
//...
}
ConsoleUpdateEvent является подклассом ComponentUpdateEvent.
Теперь я мог бы просто сделать так, чтобы метод update () в ConsoleDrawer принял ComponentUpdateEvent в качестве параметра, а затем преобразовал его в ConsoleUpdateEvent, но я ищу немного более элегантное решение, если это возможно. Мы будем признательны за Anyhelp. Спасибо.