[英]Java generic to Kotlin generic. Return generic from method
Trying to convert a project from Java to Kotlin. 试图将项目从Java转换为Kotlin。
I got stuck on a method that returns ObservableTransformer from RXJava 2 我遇到了一个从RXJava 2返回ObservableTransformer的方法
Java Java的
protected <T> ObservableTransformer<T, T> onNetworkError() {
return observable -> observable
.doOnError(throwable -> networkError.setValue(throwable));
}
Converting this using intellij ide throws an error. 使用intellij ide转换它会引发错误。
Java to Kotlin using ide Java使用ide到Kotlin
protected fun <T> onNetworkError(): ObservableTransformer<T, T> {
return { observable ->
observable
.doOnError({ throwable -> networkError.setValue(throwable) })
}
}
Does anyone have an idea to convert the above Java code to Kotlin? 有没有人有想法将上述Java代码转换为Kotlin?
Thanks in advance 提前致谢
Your code is returning a function which accepts observable
of unknown type and returns an Observable
object. 您的代码返回一个函数,该函数接受
observable
的未知类型并返回一个Observable
对象。
The lambda expression you need should be like this: 你需要的lambda表达式应该是这样的:
protected fun <T> onNetworkError(): ObservableTransformer<T, T> {
return ObservableTransformer { observable ->
observable
.doOnError({ throwable -> networkError.setValue(throwable) })
}
}
Additionally to BakaWaii's response from above, you can further simplify the code as follows: 除了BakaWaii的上述回复之外,您还可以进一步简化代码,如下所示:
protected fun <T> onNetworkError(): ObservableTransformer<T, T> {
return ObservableTransformer {
it.doOnError { networkError.setValue(it) }
}
}
However, having two different it
s might be confusing, so you might want to leave one of them as an explicit parameter. 但是,有两个不同的
it
S可能会发生会造成混乱,所以你可能要离开其中一个作为一个明确的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.