Java 通用到 Kotlin 通用。 Return 通用方法

Java generic to Kotlin generic. Return generic from method

正在尝试将项目从 Java 转换为 Kotlin。

我卡在了 returns 来自 RXJava 2

的 ObservableTransformer 的方法上

Java

protected <T> ObservableTransformer<T, T> onNetworkError() {
    return observable -> observable
            .doOnError(throwable -> networkError.setValue(throwable));
}

使用 intellij 转换它 ide 会引发错误。

Java 使用 ide

到 Kotlin
protected fun <T> onNetworkError(): ObservableTransformer<T, T> {
    return { observable ->
        observable
                .doOnError({ throwable -> networkError.setValue(throwable) })
    }
}

有人 idea 可以将上述 Java 代码转换为 Kotlin 吗?

提前致谢

您的代码正在返回一个接受未知类型 observable 和 returns 一个 Observable 对象的函数。

你需要的lambda表达式应该是这样的:

protected fun <T> onNetworkError(): ObservableTransformer<T, T> {
    return ObservableTransformer { observable ->
        observable
                .doOnError({ throwable -> networkError.setValue(throwable) })
    }
}

除了上面BakaWaii的回复,您还可以进一步简化代码如下:

protected fun <T> onNetworkError(): ObservableTransformer<T, T> {
    return ObservableTransformer {
        it.doOnError { networkError.setValue(it) }
    }
}

但是,有两个不同的 it 可能会造成混淆,因此您可能希望将其中之一保留为显式参数。