📜  Kotlin 密封类(1)

📅  最后修改于: 2023-12-03 15:32:31.020000             🧑  作者: Mango

Kotlin 密封类

在 Kotlin 中,密封类是一种特殊的类,用于描述有限集合的类型。

定义

密封类在声明时需要使用 sealed 关键字进行修饰。定义如下:

sealed class SealedClass {
    // 定义子类
}
特点
  • 密封类是抽象的,不能被实例化。
  • 密封类可以有子类,但是所有的子类都必须在密封类的内部声明。
  • 密封类的子类必须在同一个文件中,不允许在其他文件中声明。
  • 可以将密封类看作是枚举类的一种扩展,它们都可以表示有限的集合类型。
  • 对于密封类的所有子类,可以使用 when 表达式进行匹配。
举例说明

下面的例子展示了如何定义一个简单的密封类:

sealed class Result
class Success(val message: String): Result()
class Failure(val error: Throwable): Result()

在上面的例子中,Result 是一个密封类,SuccessFailureResult 的两个子类。Success 类表示成功的情况,其包含一个字符串类型的 message 属性;Failure 类表示失败的情况,其包含一个 Throwable 类型的 error 属性。

我们可以使用 when 表达式对这些子类进行匹配:

fun processResult(result: Result) {
    when(result) {
        is Success -> println(result.message)
        is Failure -> println(result.error.message)
    }
}

在上面的例子中,我们定义了一个 processResult 函数,该函数接收一个类型为 Result 的参数 result。在函数内部,我们使用 when 表达式对 result 的子类进行匹配,并打印出对应的结果。

总结

Kotlin 密封类用于描述有限集合的类型。与枚举类相比,密封类可以包含属性、方法等更多的信息,并且可以有多个实例。在使用时,我们可以使用 when 表达式对密封类的子类进行匹配,从而实现不同情况下的逻辑处理。