我已经转换了一些 JAVA
分类到 Kotlin
但我得到 Type Mismatch Error
Android Studio 中的问题。
我正在添加我的代码 fragment 以及 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);
Kotlin 代码
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 警告)
最佳答案
你只有一个可以是任何东西的 lambda 函数。有时,类型推断不能 100% 起作用,所以你必须帮助它一点
我现在没有 IDE,但我想说添加类型就足够了。就像是:
Observable.zip<...>(...,
BiFunction { subLocalities, localities ->
mLocalities = localities
mSubLocalities = subLocalities
true
}
)
顺便说一句,请注意 RxJava 的一个很酷的东西是函数式方法。如果您不想(即您调用
subscribe()
)并且所有效果都限制在 Observable 流中,则不会发生任何事情。这些作业 mLocalities = localities
mSubLocalities = subLocalities
正在引入副作用,将来可能难以跟踪错误
关于java - Observable 转换为 kotlin - 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59999595/