java - 实现多个通用接口(interface)

标签 java generics

我需要处理两种不同类型的事件,但我遇到了以下问题:

接口(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/

相关文章:

java - 如何使用索引获取 linkedhashmap 值?

java - 通过php运行jar

java:关于泛型结构的谜题

oracle - 带有基于行类型的集合的 ANYDATA

java - Spring中如何使用泛型?

c# - 具有泛型的可空原语

java - jfreechart:如何排列两个图?

java - JSF 2.2 - 未找到 "link"标签

java - 接口(interface)是否为Java中的对象提供特定含义

c# - .NET 告诉我 TypeLoadException : violates the constraint of type parameter 'T' while my code clearly doesn't violate it