有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Observable转换成kotlin问题

我已经将一些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);

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警告)

enter image description here


共 (2) 个答案

  1. # 1 楼答案

    你只有一个lambda函数,它可以是任何东西。有时,类型推断无法100%工作,因此您必须稍微帮助它

    我现在没有IDE,但我认为添加类型应该足够了。比如:

    Observable.zip<...>(...,
        BiFunction { subLocalities, localities ->
            mLocalities = localities
            mSubLocalities = subLocalities
            true
        }
    )
    

    作为旁注,请注意RxJava最酷的东西之一是函数式方法。如果你不想(例如,你调用subscribe()),那么什么都不会发生,所有的效果都被限制在可观察的流中。这些作业

            mLocalities = localities
            mSubLocalities = subLocalities
    

    正在引入的副作用可能在未来很难追踪bug

  2. # 2 楼答案

    如果你想在kotlin中顺利使用zip,你应该在gradle中添加RxKotlin

    尝试观察。拉链不可见的。拉链