基础科目
RxJava 中的 Subject
是一个既是 Observable
又是 Observer
的类。这基本上意味着它可以充当 Observable
并将输入传递给订阅者,并作为 Observer
从另一个 Observable 获取输入。
Subject<String, String> subject = PublishSubject.create();
subject.subscribe(System.out::print);
subject.onNext("Hello, World!");
以上打印 Hello World!
使用 Subjects
控制台。
说明
-
第一行代码定义了
PublishSubject
类型的新Subject
Subject<String, String> subject = PublishSubject.create(); | | | | | subject<input, output> name = default publish subject
-
第二行订阅了主题,显示了
Observer
的行为。subject.subscribe(System.out::print);
这使得
Subject
能够像普通用户那样接收输入 -
第三行调用了主题的
onNext
方法,显示了Observable
的行为。subject.onNext("Hello, World!");
这使得
Subject
可以为所有订阅者提供输入。
类型
Subject
(在 RxJava 中)可以是以下四种类型中的任何一种:
- AsyncSubject
- BehaviorSubject
- PublishSubject
- ReplaySubject
此外,Subject
可以是 SerializedSubject
型。此类型确保 Subject
不违反 Observable Contract (指定所有调用必须序列化)
进一步阅读: