基礎科目
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 (指定所有呼叫必須序列化)
進一步閱讀: