A class for managing event listeners for an event source.
This class allows registering an arbitrary number of event listeners for specific event types. Event types are specified using the {@link EventType}class. Due to the type parameters in method signatures, it is guaranteed that registered listeners are compatible with the event types they are interested in.
There are also methods for firing events. Here all registered listeners are determined - based on the event type specified at registration time - which should receive the event to be fired. So basically, the event type at listener registration serves as a filter criterion. Because of the hierarchical nature of event types it can be determined in a fine-grained way which events are propagated to which listeners. It is also possible to register a listener multiple times for different event types.
Implementation note: This class is thread-safe.
@version $Id: EventListenerList.java 1624601 2014-09-12 18:04:36Z oheger $
@since 2.0