Reactor を次のように使用したい:
reactor.notify(new CreatedEvent<A>(a));
reactor.notify(new CreatedEvent<B>(b));
私のイベントは単純です:
public class CreatedEvent<E> extends Event<E> {
public CreatedEvent(E data) {
super(data);
}
}
そして、それらのイベントを次のように消費します。
reactor.on(new Consumer<CreatedEvent<A>>() {
@Override
public void accept(CreatedEvent<A> t) {
/* do something with a */
}
});
reactor.on(new Consumer<CreatedEvent<B>>() {
@Override
public void accept(CreatedEvent<B> t) {
/* do something with b */
}
});
しかし、私は両方の消費者と両方のイベントを受け取ります。
セレクターを使用すると、次のように機能します。
reactor.notify("created.a", Event.wrap(a));
reactor.on(Selectors.$("created.a"), new Consumer<Event<A>>() {
@Override
public void accept(Event<A> t) {
/* do something with a */
}
});
しかし、セレクターを使用すると、非常に多くの文字列を作成して維持する必要があります。
セレクターを使用することがすべてですか?または、どういうわけか「パラメータ化されたクラスタイプで選択」できますか?