我正在尝试使用 Java 中的多个侦听器和多种事件类型来实现观察者/侦听器模式。每个事件侦听器都可能对一种或多种事件类型感兴趣。
为每种特定事件类型存储侦听器并对其进行迭代的最有效方法是什么(可能是列表列表)?
当然,强烈推荐线程安全的解决方案。
我正在尝试使用 Java 中的多个侦听器和多种事件类型来实现观察者/侦听器模式。每个事件侦听器都可能对一种或多种事件类型感兴趣。
为每种特定事件类型存储侦听器并对其进行迭代的最有效方法是什么(可能是列表列表)?
当然,强烈推荐线程安全的解决方案。
您可以将java.util.concurrent.ConcurrentHashMap用于线程安全哈希映射。
您需要的结构是:
ConcurrentHashMap<EventType,List<Listener>> map;
这样,每个侦听器都注册到多个事件类型。
也许您正在寻找EventListenerList
课程?但我可能误解了你。
看看EventListenerList。它包含任何实现EventListener的列表。然后您可以调用getListeners(class)
以获取类型的侦听器class
。