rxjava : lambda 与 ObservableTransformer 、compose:

示例一 : 将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());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值