为何不能将“kotlin.Result”用作返回类型?
Result 是 Kotlin 中的一个可序列化类。它的函数定义如下 −
class Result<out T> : Serializable
此类有两个属性 − “isFailure” 和 “isSuccess”。
根据文档说明,Result<T> 不能用作 Kotlin 函数的直接返回类型。但是,在本文中,我们将演示如何在 Kotlin 程序中使用这个 Result。
// ERROR: 'kotlin.Result' cannot be used as a return type fun findUserByName(name: String): Result<User> fun foo(): Result<List<Int>> // ERROR fun foo(): Result<Int>? // ERROR var foo: Result<Int> // ERROR
示例 – Kotlin.Result
sealed class myInterFace<out Success, out Failure> data class Success<out Success>(val value: Success) : myInterFace<Success, Nothing>() data class Failure<out Failure>(val reason: Failure) : myInterFace<Nothing, Failure>() fun myMethod(string : String) : myInterFace<String, Exception> { return if (string.isEmpty()) { Failure(Exception("Error in the process")) } else { Success(string) } } fun main(args : Array<String>) { when(val result = myMethod("")) { is Success -> println(result.value) is Failure -> println(result.reason) } }
输出
执行后,将产生以下输出 −
java.lang.Exception: Error in the process
广告