我正在使用带有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中的方法映射无法应用于给定类型。
答案 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());