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