2017-08-30 94 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