以下では、EventHandler が EventA をある方法で処理し、EventB を別の方法で処理し、他のすべてのイベント (EventC、EventD) をさらに別の方法で処理するようにします。EventReceiver は Event への参照のみを受け取り、EventHandler.handle() を呼び出します。もちろん、常に呼び出されるバージョンは EventHandler.handle(Event event) です。
instanceOf を使用せずに、(おそらく EventHandler またはジェネリックの別のメソッドを介して) 適切なハンドル メソッドにポリモーフィックにディスパッチする方法はありますか?
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);
}
}