Z
ZHANK
面向对象

密封类与枚举

sealed class 受限继承、enum class、when 穷举检查

密封类与枚举

sealed class 限制子类在同一文件内——配合 when 实现穷举检查。

学完本章你将: 掌握 sealed class、enum class、穷举 when。


密封类

kotlin
sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    object Loading : Result()
}

fun handle(result: Result) = when (result) {
    is Result.Success -> println("成功: ${result.data}")
    is Result.Error -> println("失败: ${result.message}")
    Result.Loading -> println("加载中...")
    // 不需要 else——编译器知道只有这三种
}

枚举

kotlin
enum class Color(val rgb: Int) {
    RED(0xFF0000),
    GREEN(0x00FF00),
    BLUE(0x0000FF);

    fun isWarm() = this == RED
}

println(Color.RED.rgb)       // 16711680
println(Color.GREEN.isWarm()) // false

sealed vs enum

sealed classenum class
子类可以有多个实例每个是单例
构造函数子类可不同统一构造函数
位置同文件同枚举体
适用状态/结果类型固定选项集