我需要处理两种不同类型的事件,但我遇到了以下问题:
使用不同的参数不能多次实现接口EventListener:EventListener<PriceUpdate>和EventListener<OrderEvent>.
有一个优雅的解决方案吗?
public interface EventListener <E> {
public void handle(E event);
}
public interface PriceUpdateEventListener extends EventListener<PriceUpdate> {
}
public interface OrderEventListener extends EventListener<OrderEvent> {
}
public class CompositeListener implements OrderEventListener,PriceUpdateEventListener {
....
}
Run Code Online (Sandbox Code Playgroud)
实际上只有一个句柄(Object)方法.你实际上是这样写的
public class CompositeListener implements EventListener {
public void handle(Object event) {
if (event instanceof PriceUpdate) {
///
} else if (event instanceof OrderEvent) {
///
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有此检查逻辑,则无论如何都无法有效地调用事件侦听器.