我已经将一些JAVA
类转换为Kotlin
,但是在Android Studio中却遇到了Type Mismatch Error
问题。
我将在IDE中添加代码段以及消息的屏幕快照以供参考。
JAVA代码
Disposable disposable = Observable.just(true)
.subscribeOn(Schedulers.io())
.flatMap((Function<Object, ObservableSource<?>>) o ->
Observable.zip(mModel.getSubLocalitiesFromStores(storeType, storeVerified),
mModel.getLocalitiesFromSubLocalities(),
(subLocalities, localities) -> {
mLocalities = localities;
mSubLocalities = subLocalities;
return true;
}
))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(res -> {
setUpLocalitySpinner(spinnerLocalities);
setUpSubLocalitySpinner(spinnerSubLocalities);
});
compositeDisposable.add(disposable);
科林码
Observable.just(true)
.subscribeOn(Schedulers.io())
.flatMap({ o->
Observable.zip<ArrayList<SubLocality>, ArrayList<Locality>, Boolean>(mModel!!.getSubLocalitiesFromStores(storeType, storeVerified),
mModel!!.localitiesFromSubLocalities,
{ subLocalities, localities ->
mLocalities = localities
mSubLocalities = subLocalities
true
}
)
} as Function<Any, ObservableSource<*>>)
.observeOn(AndroidSchedulers.mainThread())
.subscribe { res ->
setUpLocalitySpinner(spinnerLocalities)
setUpSubLocalitySpinner(spinnerSubLocalities)
}
问题(IDE警告)
答案 0 :(得分:1)
您只有一个lambda函数,可以是任何东西。有时,类型推断不能100%起作用,因此您必须稍微加以帮助
我现在没有IDE,但是我说添加类型就足够了。像这样:
Observable.zip<...>(...,
BiFunction { subLocalities, localities ->
mLocalities = localities
mSubLocalities = subLocalities
true
}
)
请注意,请注意,RxJava的一项很酷的功能是功能方法。如果您不愿意(即调用subscribe()
),则什么也不会发生,并且所有效果都限制在Observable流中。这些作业
mLocalities = localities
mSubLocalities = subLocalities
引入了副作用,将来可能很难跟踪错误
答案 1 :(得分:0)
如果您想在kotlin上平稳使用zip
,则应在gradle上添加RxKotlin
尝试Observables.zip。不是Observable.zip