示例一 : 将Integer 转 String
将一个发射整数的Observable转换为发射字符串的Observable。
// private ObservableTransformer<Integer, String> transformer() {
// return new ObservableTransformer<Integer, String>() {
// @Override
// public ObservableSource<String> apply(Observable<Integer> upstream) {
// return upstream.map(new Function<Integer, String>() {
// @Override
// public String apply(Integer integer) throws Exception {
// return String.valueOf(integer);
// }
// });
// }
// };
// }
//简化
// private ObservableTransformer<Integer, String> transformer() {
// return upstream -> upstream.map(new Function<Integer, String>() {
// @Override
// public String apply(Integer integer) throws Exception {
// return String.valueOf(integer);
// }
// });
// }
//简化
// private ObservableTransformer<Integer, String> transformer() {
// return upstream -> upstream.map((Function<Integer, String>) integer -> {
// return String.valueOf(integer);
// });
// }
//简化
private <String> ObservableTransformer<Integer, java.lang.String> transformer() {
return upstream ->
upstream.map((Function<Integer, java.lang.String>) java.lang.String::valueOf);
}
示例二 :线程切换
// public ObservableTransformer transformer2() {
// return new ObservableTransformer() {
// @Override
// public ObservableSource apply(Observable upstream) {
// return upstream.subscribeOn(Schedulers.io())
// .unsubscribeOn(Schedulers.io())
// .observeOn(AndroidSchedulers.mainThread());
// }
// };
// }
//简化
public <T> ObservableTransformer<T, T> transformer2() {
return upstream -> upstream.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
测试:
public class Test111111 {
public void compose1() {
Disposable disposable = Observable.just(123, 456)
.compose(transformer())
.subscribe(s -> System.out.println("s: " + s));
}
public void compose2() {
Disposable disposable = Observable.just(789, 321)
.compose(transformer2())
.subscribe(integer -> System.out.println("integer===" + integer));
}
private <String> ObservableTransformer<Integer, java.lang.String> transformer() {
return upstream ->
upstream.map((Function<Integer, java.lang.String>) java.lang.String::valueOf);
}
public <T> ObservableTransformer<T, T> transformer2() {
return upstream -> upstream.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
}