SubjectRxJava中的A是既是Observable和又是的类Observer。这基本上意味着它可以充当Observable和将输入传递给订阅者,以及Observer从另一个Observable获取输入。
Subject<String, String> subject = PublishSubject.create(); subject.subscribe(System.out::print); subject.onNext("Hello, World!");
上面打印了“你好,世界!” 使用进行控制台Subjects。
说明
代码的第一行定义一个新Subject的类型PublishSubject
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)可以是任何这些四种类型:
异步主题
行为主体
发布主题
重播主题
另外,aSubject可以是type SerializedSubject。此类型确保Subject不会违反可观察合同 (该合同规定所有调用都必须序列化)
进一步阅读:
使用或不使用Dave Sexton博客中的主题