実行時にのみタイプを判別できるイベントを発生させたいのですが、たとえば、クラスとAB
を実装するインタフェースA
があるとします。サブクラスランタイムタイプのイベントを起動
public void observeAA(@Observes AA aa) {
}
public void observeAA(@Observes AB ab) {
}
その後、いくつかのイベントプロデューサ:私は2人のオブザーバーを持って
@Inject @Any
private Event<A> event;
public A getPayload();
public void fire() {
this.event.fire(getPayload());
}
A
がAA
またはAB
(それは周りの他の方法です)のサブタイプでもないので、これは動作しません。
public <U extends T> Event<U> select(Class<U> subtype, Annotation... qualifiers);
はしかし、それは(私が間違っている場合は、正しい)、私は実行時に構築することはできません正しくパラメータ化Class
オブジェクトが必要です:私は、サブタイプを取るselect
方法があります気づきました。
修飾子を使用する必要がありますか(おそらくClass<?>
メソッドの注釈)。
public void observeA(@Observes A a) {
}
を使用していないのはなぜ
私はそのロジックを集中化できないためです。オブザーバーは私的な状態などを変更する必要があります。もし* if(!(インスタンスのAA))が返ります;しかし、私はすべてのオブザーバーにそれを置く必要があります。 – Artefacto