Więc zadałem to pytanie wcześniej, ale popełniłem błąd w kodzie, który podniósł większość ludzi, a nie sam problem.Java: podstawianie podklasy/podtypu parametru podczas nadpisywania metody?
W każdym razie staram się przesłonić metodę interfejsu w klasie. Jednak chcę, aby typ parametru w metodzie przesłaniania był podklasą typu parametru zdefiniowanego w metodzie overriden.
Interfejs jest:
public interface Observer {
public void update(ComponentUpdateEvent updateEvent) throws Exception;
}
Podczas gdy klasy, który zastępuje ten sposób jest następujący:
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 to podklasa ComponentUpdateEvent.
Teraz mógłbym mieć metodę update() w ConsoleDrawer jako parametr ComponentUpdateEvent, a następnie przesłać ją do ConsoleUpdateEvent, ale jeśli to możliwe, szukam nieco bardziej eleganckiego rozwiązania. Anyhelp byłby doceniony. Dziękuję Ci.
Nie sądzę, że jest to możliwe, ponieważ jest sprzeczne z zasadą interfejsu (tj. Klasy, które implementują interfejs, będą dokładnie pasować do wszystkich sygnatur metody określonych przez interfejs). Jednak będę obserwować to pytanie, ponieważ jestem bardzo zainteresowany, aby zobaczyć, czy ktoś inny mnie nie wykaże. – DGH