使用RxJava2时我该用什么代替Func1?

时间:2019-06-11 21:05:30

标签: rx-java2

我正在使用带有RxJava的PublishSubject,我的代码看起来像这样

 mPublishSubject = PublishSubject.create()
                .map(new Func1<String, List<String>>() {
                    @Override
                    public List<String> call(String s) {
                    return mRestClient.searchForCity(s);
                }
                })

                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread());

在使用RxJava2时我该怎么做,我尝试使用Function而不是Func1,但我收到一条错误消息-类Observable中的方法映射无法应用于给定类型。

2 个答案:

答案 0 :(得分:0)

如消息人士所述:

height: 100% !important;

所以您需要一个功能! 或者,您始终可以使用如下的lambda:public final <R> Observable<R> map(Function<? super T, ? extends R> mapper) { ObjectHelper.requireNonNull(mapper, "mapper is null"); return RxJavaPlugins.onAssembly(new ObservableMap<T, R>(this, mapper)); }

答案 1 :(得分:0)

您可以通过lambda语法创建java.util.Function并预先定义PublishSubject类型参数,以便函数的输入参数类型已知:

mPublishSubject = PublishSubject.<String>create()
   .map(s -> mRestClient.searchForCity(s))
   .subscribeOn(Schedulers.io())
   .observeOn(AndroidSchedulers.mainThread());