org.freecompany.util.multicaster
Class AbstractMulticaster<T>

java.lang.Object
  extended by org.freecompany.util.multicaster.AbstractMulticaster<T>
All Implemented Interfaces:
Multicaster<T>
Direct Known Subclasses:
DefaultMulticaster.Handler, NotificationMulticaster

public abstract class AbstractMulticaster<T>
extends java.lang.Object
implements Multicaster<T>

This is a generic abstract event multicaster based on the pattern of the java.awt.AWTEventMulticaster. It's benefits are zero cost for all single listeners and near zero cost for a few more after that. Classes which commonly have greater than a few listeners may be better off using a standard collection with fast iteration.


Field Summary
protected  T a
           
protected  T b
           
 
Constructor Summary
protected AbstractMulticaster()
           
protected AbstractMulticaster(T a, T b)
           
 
Method Summary
static
<T> T
add(java.lang.Class<? extends Multicaster> clazz, T nullListener, T a, T b)
           
static
<T> T
add(Multicaster object, T nullListener, T a, T b)
           
 T getA()
           
 T getB()
           
static
<T> T
remove(T nullListener, T current, T old)
           
static
<T> T
removeInternal(Multicaster<T> object, T nullListener, T old)
           
 void setA(T a)
           
 void setB(T b)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

a

protected T a

b

protected T b
Constructor Detail

AbstractMulticaster

protected AbstractMulticaster()

AbstractMulticaster

protected AbstractMulticaster(T a,
                              T b)
Method Detail

getA

public T getA()
Specified by:
getA in interface Multicaster<T>

getB

public T getB()
Specified by:
getB in interface Multicaster<T>

setA

public void setA(T a)
Specified by:
setA in interface Multicaster<T>

setB

public void setB(T b)
Specified by:
setB in interface Multicaster<T>

removeInternal

public static <T> T removeInternal(Multicaster<T> object,
                                   T nullListener,
                                   T old)

add

public static <T> T add(java.lang.Class<? extends Multicaster> clazz,
                        T nullListener,
                        T a,
                        T b)

add

public static <T> T add(Multicaster object,
                        T nullListener,
                        T a,
                        T b)

remove

public static <T> T remove(T nullListener,
                           T current,
                           T old)