Как использовать void Subject в RxJava2?

Мне удалось создать это так:

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

Но как передать ему значение в onNext(T t)? Я не могу передать ему значение null, потому что он выдаст исключение. onComplete тоже не вариант.

1 ответ

Решение

В 2.x, как правило, пустые значения не допускаются. Void Тип не позволит вам излучать какие-либо onNext(null) в отличие от 1.x. Если вы думаете, что вам нужно Void как тип вашего элемента, это означает, что вы не заботитесь о том, какие элементы вы просто хотите отреагировать на что-то снова и снова.

В этом случае вы можете использовать любой другой тип и указать любое значение. В вики есть пример, который вы можете адаптировать:

enum Irrelevant { INSTANCE; }

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

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

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

В Kotlin вы можете использовать любой объект:

val source = PublishSubject.create<Unit>()

source.onNext(Unit)
Другие вопросы по тегам