Kotlin 如何向上转换构造函数的返回值
我想修复一个类型不匹配的编译器错误,这是我从下面的代码中得到的,其中类型推断并不是我想要的。我有一个密封类和一个rxjava流:Kotlin 如何向上转换构造函数的返回值,kotlin,rx-java,rx-java2,Kotlin,Rx Java,Rx Java2,我想修复一个类型不匹配的编译器错误,这是我从下面的代码中得到的,其中类型推断并不是我想要的。我有一个密封类和一个rxjava流: sealed class Result { data class Success(val logs: List<Log>) : Result() data class Failure(val throwable: Throwable) : Result() object InFlight : Result() } val logs
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)
但是我想知道,如果使用构造函数引用,例如
Result::Success as Result
这种向上转换是否可行。问题在于推断的类型。因为logs.map(Result::Success)
推断类型Success
,而不是Result
。比.onerrorrurn(Result::Failure)
失败,因为它是失败
类型
你可以把它改成
logs.map<Result>(Result::Success)
.onErrorReturn(Result::Failure)
logs.map(结果::成功)
.onErrorReturn(结果::失败)
使类型显式
logs.map<Result>(Result::Success)
.onErrorReturn(Result::Failure)