密封类与枚举
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 class | enum class | |
|---|---|---|
| 子类 | 可以有多个实例 | 每个是单例 |
| 构造函数 | 子类可不同 | 统一构造函数 |
| 位置 | 同文件 | 同枚举体 |
| 适用 | 状态/结果类型 | 固定选项集 |