我收到警告:這是否會導致可變參數堆的污染?
[選中]可能堆從參數可變參數的類型類污染
但我不確定是否將實際污染:
public void register(EventListener listener, Class<? extends Event>... eventTypes) {}
這裏必要時完整實施:
public class EventDispatcher {
public static ConcurrentLinkedQueue<Event> eventQueue;
public static ConcurrentHashMap<Class<? extends Event>, CopyOnWriteArrayList<EventListener>> eventsListenerMap =
new ConcurrentHashMap<>();
public static void register(EventListener listener, Class<? extends Event>... eventTypes) {
for (Class<? extends Event> eventType : eventTypes) {
if (eventsListenerMap.containsKey(eventType)) {
eventsListenerMap.get(eventType).addIfAbsent(listener);
} else {
CopyOnWriteArrayList<EventListener> initializingListeners =
new CopyOnWriteArrayList<>();
initializingListeners.add(listener);
eventsListenerMap.put(eventType, initializingListeners);
}
}
}
}
爲了改善這一點,我也爲OT提出了一些建議,但請記住,這個課程還沒有完成。
基於我的代碼的例子明確了什麼是陷阱。建議的預防措施可幫助我防止出現錯誤,並且該註釋會清除IDE。所有與有用的鏈接。好,緊湊的答案,謝謝。 – zsawyer