2017-08-30 109 views
0

我已經成功地創建這樣說:如何在RxJava2中使用void Subject?

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

但如何在價值傳遞onNext(T t)給它?我無法將null傳遞給它,因爲它會拋出異常。 onComplete也不是一個選項。

回答

2

在2.x中通常不允許空值,因此Void類型不會讓您發出任何onNext(null)而不像1.x.如果你認爲你需要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