Java通用于Kotlin通用。 从方法返回泛型

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

我被困在从RXJava 2返回ObservableTransformer的方法中

Java的

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

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

Java到Kotlin使用ide

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

有没有人有一个想法将上面的Java代码转换为Kotlin?

提前致谢

您的代码正在返回一个接受未知类型的observable的函数,并返回一个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) } } } 

但是,有两个不同的可能会令人困惑,所以你可能想离开其中一个作为一个明确的参数。