我需要处理两种不同类型的事件,但我遇到了以下问题:
接口(interface) 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 {
....
}
最佳答案
现实中只有一个handle(Object)方法。你实际上写的和 一样
public class CompositeListener implements EventListener {
public void handle(Object event) {
if (event instanceof PriceUpdate) {
///
} else if (event instanceof OrderEvent) {
///
}
}
}
如果没有这种检查逻辑,在任何情况下您都无法有效地调用您的事件监听器。
关于java - 实现多个通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290558/