2017-08-30 4 views
0

私は、このようにそれを作成するために管理してきました:RxJava2でvoid Subjectを使用するには?

private final PublishSubject<Void> subject = PublishSubject.create(); 

をしかし、どのようonNext(T t)でそれに値を渡すために?私はそれにnullを渡すことはできません、それは例外がスローされます。 もオプションではありません。

答えて

2

ヌルは2.xでは一般的に許可されていないため、Voidタイプでは、1.xと異なりonNext(null)が放出されません。エレメントタイプとしてVoidが必要と思われる場合は、繰り返し何かに反応したい要素が何であるか気にしないことを示します。

この場合、代わりに他のタイプを使用して任意の値を通知できます。 wikiには、次のような例があります。

enum Irrelevant { INSTANCE; } 

PublishSubject<Irrelevant > source = PublishSubject.create(); 

source.subscribe(e -> { /* Ignored. */ }, Throwable::printStackTrace); 

source.onNext(Irrelevant.INSTANCE); 
source.onNext(Irrelevant.INSTANCE); 
+0

ありがとうございました。私はフレームワークに組み込みのクラスがいくつかあると思っていました。この機能をフレームワークに追加することをお勧めします。 –

+0

誰のビジネスオブジェクトにも組み込み型がありません。そうでなければ、特定のフィールドや構造体を持たない 'RxUser'オブジェクトによって制約されると想像してください... – akarnokd

関連する問題