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()
方法之后,还想再正常使用时,才需要调用这个方法。