我有一个事件类型列表
enum EventType {
ErrorEvent, StatusEvent, DataEvent
}
一个监听器可以通过调用注册多个事件
addListener (Listener listener,EventType eventType) {
// to do
}
任何人都可以建议,我可以使用什么数据结构来存储所有这些信息 (监听器及其关联的事件类型)
或任何其他 java API 类已经支持此功能?
数组的数组或 列表列表对我来说看起来很难看。
请提出建议
提前致谢。
最佳答案
使用列表的 EnumMap(如果您希望监听器唯一,则使用集合)。
private Map<EventType, List<Listener>> listeners =
new EnumMap<EventType, List<Listener>>(EventType.class);
public void addListener(Listener listener, EventType eventType) {
if(null == listeners.get(eventType)) {
listeners.put(eventType, new ArrayList<Listener>());
}
listeners.get(eventType).add(listener);
}
private void sendEvent(Event e) {
if(listeners.get(e.getType() == null) {
return;
}
for(Listener listener : listeners.get(e.getType()) {
listener.eventOccurred(e);
}
}
关于java - 事件处理,数据结构和程序设计,java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6490133/