如何上传一个构造函数的返回值

我想解决一个类型不匹配的编译器错误,我从下面的代码,其中类型推断没有做我想要的。 我有一个密封的类和一个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.Success类中的Result.Success ,如:

  logs.map({ logs -> Result.Success(logs) as Result }) 

但是我想知道这个上传是否可以用一个构造函数引用,例如Result::Success as Result

问题是在推断的类型。 因为logs.map(Result::Success)推断了类型Success而不是Result 。 比.onErrorReturn(Result::Failure)失败,因为它是一个Failure类型。

你可以改变它

 logs.map<Result>(Result::Success) .onErrorReturn(Result::Failure) 

<Result>使类型显式化。