Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 如何向上转换构造函数的返回值_Kotlin_Rx Java_Rx Java2 - Fatal编程技术网

Kotlin 如何向上转换构造函数的返回值

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

我想修复一个类型不匹配的编译器错误,这是我从下面的代码中得到的,其中类型推断并不是我想要的。我有一个密封类和一个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)

但是我想知道,如果使用构造函数引用,例如
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)