我想修复一个类型不匹配的编译器错误,我从下面的代码得到,其中类型推断没有做我想要的 . 我有一个密封的类和一个rxjava流:
sealed class Result {
data class Success(val logs: List<Log>) : Result()
data class Failure(val throwable: Throwable) : Result()
object InFlight : Result()
}
val logs: Observable<List<Log>> = getLogs()
logs.map(Result::Success)
.onErrorReturn(Result::Failure)
类型不匹配:推断类型是KFunction1 <@ParameterName Throwable,Result.Failure>但是函数!预计
我可以通过显式指定映射器函数返回类型来修复错误,这类型是从推断类型 Result.Success
到 Result
的向上转发,如下所示:
logs.map({ logs ->
Result.Success(logs) as Result
})
但我想知道是否可以使用构造函数引用进行此向上转换,类似于 Result::Success as Result
1 回答
问题是推断类型 . 因为
logs.map(Result::Success)
推断类型Success
而不是Result
. 比.onErrorReturn(Result::Failure)
失败,因为它是Failure
类型 .你可以把它改成
<Result>
使类型显式化 .