2

私が尋ねた別の質問には良い解決策があると思っていましたが、今ではうまくいかないと思います。

Otto で、次のようなことをすると:

@Subscribe public void foo(ApiRequestEvent<Foo> event) {
}

@Subscribe public void bar(ApiRequestEvent<Bar> even) {
}

ApiRequestEvent<>のインスタンスをバスに投稿すると、両方のメソッドが呼び出されるようです。それは何が期待されていますか?

Java には実際には 1 つの class しかなくApiRequestEvent、Otto は型パラメーターを無視してクラスを見ているため、これが発生するのではないかと考えています。

このアプローチを放棄する前に、とにかくこれについて何かありますか? このパラメーター化されたクラスを、サブスクライブしたいイベントの「署名」として使用するつもりでした。

4

1 に答える 1

1

それは正しいです。型パラメータは無視されます。

私の典型的なアプローチは、サブスクライバー メソッドが関心のあるイベントを除外するためにチェックできる、すべてのイベント タイプの Enum を定義することです。

残念なことに、すべてのイベント タイプを列挙するのは面倒なので、もちろんこれはうまくスケーリングできません。

于 2014-05-13T03:39:42.107 に答える