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) } } }
但是,有两个不同的可能会令人困惑,所以你可能想离开其中一个作为一个明确的参数。