public final class EventUtils
extends java.lang.Object
事件消息工具类。 用于获取发送消息的委托对象,或者注册消息监听器。
public class EventUtilsTest {
public static interface TestListener {
void method();
}
public static class TestListenerImplOne implements TestListener {
public boolean invoked = false;
public void method() {
invoked = true;
System.out.println("TestListenerImplOne.method() invoked");
}
}
public static class TestListenerImplTwo implements TestListener {
public boolean invoked = false;
public void method() {
invoked = true;
System.out.println("TestListenerImplTwo.method() invoked");
}
}
public static void main(String[] args) {
TestListenerImplOne listener1 = new TestListenerImplOne();
EventUtils.registerEventListener(TestListener.class, listener1);
TestListenerImplTwo listener2 = new TestListenerImplTwo();
EventUtils.registerEventListener(TestListener.class, listener2);
TestListener sender = EventUtils.getDelegate(TestListener.class);
sender.method();
while(!(listener1.invoked && listener2.invoked)) {
Thread.yield();
}
//程序将输出
//TestListenerImplTwo.method() invoked
//TestListenerImplOne.method() invoked
//或者
//TestListenerImplOne.method() invoked
//TestListenerImplTwo.method() invoked
//
//listener1和listener2被调用的顺序和时间都是不确定的。
EventUtils.dipose();
}
}
| 构造器和说明 |
|---|
EventUtils() |
| 限定符和类型 | 方法和说明 |
|---|---|
static void |
dipose()
销毁发送消息的线程池。
|
static <T> T |
getDelegate(java.lang.Class<T> eventType)
获取一个用于发送消息的委托对象。
|
static void |
init()
初始化发送消息的线程池。
|
static <T> void |
registerEventListener(java.lang.Class<T> eventType, T listener)
注册一个消息监听器。
|
static <T> void |
removeListener(java.lang.Class<T> eventType, T listener) |
public static <T> void registerEventListener(java.lang.Class<T> eventType,
T listener)
注册一个消息监听器。
eventType - 注册的消息监听器接口类型。该参数必须是一个接口类型,否则该方法将不做任何操作。listener - 接收消息的实例。
public static <T> void removeListener(java.lang.Class<T> eventType,
T listener)
public static <T> T getDelegate(java.lang.Class<T> eventType)
获取一个用于发送消息的委托对象。 该函数要求传入一个接口类型为参数,返回的对象是传入的接口类型的实例。 可以直接在返回的实例上调用相应的方法以发送消息。 但是只能调用返回值为void的方法,否则程序的行为是不确定的。
eventType - 需要获取的消息接口类型,该参数必须是一个接口类型。public static void dipose()
销毁发送消息的线程池。
public static void init()
初始化发送消息的线程池。 默认情况下不需要调用,只有调用了dipose()方法之后,还想再正常使用时,才需要调用这个方法。