1.HandlerFinder
发现生产者和订阅者。
HandlerFinder本身是一个接口(interface),该接口中有两个接口方法:
// 发现所有的生产者
Map<Class<?>, EventProducer> findAllProducers(Object listener);
// 发现所有的订阅者
Map<Class<?>, Set<EventHandler>> findAllSubscribers(Object listener);
发现所有的生产者和订阅者,将获取到的所有的生产者或订阅者放到Map集合中。由于生产者和订阅者的关系是一对多的关系,也就是说一个生产者可以有多个订阅者,所以在发现所有的生产者中Map里面存的只是一个EventProducer(事件生产者),而发现所有的订阅者的Map里面存的则是集合Set<EventHandler>。
在HandlerFinder中还有一个接口内部类:
HandlerFinder ANNOTATED = new HandlerFinder() {
@Override
public Map<Class<?>, EventProducer> findAllProducers(Object listener) {
return AnnotatedHandlerFinder.findAllProducers(listener);
}
@Override
public Map<Class<?>, Set<EventHandler> > findAllSubscribers(Object listener) {
return AnnotatedHandlerFinder.findAllSubscribers(listener);
}
};
2. DeadEvent
包裹一个已经提交的但是由于没有订阅者而不能发出的事件。
这个类中有两个全局静态变量:
public final Object source;
public final Object event;
其中event保存的是不能交付的事件,source保存的是产生event的来源(一般在Bus类中)。
还有一个带参数的构造方法:
/**
* Creates a new DeadEvent.
*
* @param source object broadcasting the DeadEvent (generally the {@link Bus}).
* @param event the event that could not be delivered.
*/
public DeadEvent(Object source, Object event) {
this.source = source;
this.event = event;
}