Im Folgenden möchte ich, dass EventHandler EventA auf eine Weise, EventB auf eine andere Weise und alle anderen Ereignisse (EventC, EventD) auf eine andere Weise behandelt. EventReceiver empfängt nur eine Referenz auf ein Ereignis und ruft EventHandler.handle() auf. Die Version, die immer aufgerufen wird, ist natürlich EventHandler.handle(Event event).
Ohne instanceOf zu verwenden, gibt es eine Möglichkeit, polymorph zu versenden (vielleicht über eine andere Methode in EventHandler oder Generika) an die entsprechende Handle-Methode?
class EventA extends Event {
}
class EventB extends Event {
}
class EventC extends Event {
}
class EventD extends Event {
}
class EventHandler {
void handle(EventA event) {
System.out.println("Handling EventA");
}
void handle(EventB event) {
System.out.println("Handling EventB");
}
void handle(Event event) {
System.out.println("Handling Event");
}
}
class EventReceiver {
private EventHandler handler;
void receive(Event event) {
handler.handle(event);
}
}