0

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 */
    }
});

しかし、セレクターを使用すると、非常に多くの文字列を作成して維持する必要があります。

セレクターを使用することがすべてですか?または、どういうわけか「パラメータ化されたクラスタイプで選択」できますか?

4

1 に答える 1