RxJava2.0の基本クラスを学ぶ
今さらですがRxJava2.0について学びたいと思います。
RxJava2.0ではObservableに似たクラスとしてFlowable, Maybeが追加されています。
今回は復習の意味も込めて、Observable, Single, Completable, Maybeの違いについて調べてみたいと思います。
Flowableはだいぶ特殊でObservableで扱うストリームでバッファを考慮するとき等に使うようで、(自分にとっては)現状あまり用途がないので割愛します。
Observable
0~N個のオブジェクトの流れ、完了、エラーを扱います。
プログラム
Observable.range(1, 10) .subscribe(System.out::println);
出力結果
1 2 3 4 5 6 7 8 9 10
Single
1つのオブジェクトの流れ、エラーを扱います。 onCompleteは呼ばれないです。
プログラム
Single.just(1)
.subscribe(System.out::println);
出力結果
1
Completable
オブジェクトの流れは扱わず、完了かエラーの判定のみ扱います。
完了
プログラム
Observable<Integer> observable = Observable.range(1, 10); Completable.fromObservable(observable) .subscribe( () -> System.out.println("Complete!"), e -> System.out.println(e.getMessage()));
出力結果
Complete!
エラー
プログラム
Completable.fromObservable(observable) .subscribe( () -> System.out.println("Complete!"), e -> System.out.println(e.getMessage()));
出力結果
damepo
Maybe
0~1個のオブジェクト、エラーを扱います。 onCompleteは呼ばれます。
プログラム
Maybe.just(1) .filter(integer -> integer == 2) .defaultIfEmpty(3) .subscribe(System.out::println);
出力結果
3
感想
SingleとMaybeの違いが分かりづらいです。 Singleに0個のオブジェクトの時の処理を追加したのがMaybeなのかな・・・。もっと勉強しないと!
参考URL
GitHub - ReactiveX/RxJava: RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM. RxJava2.0 Observable, Single, Maybe, Completableの使い分けメモ - Qiita