知识卡片

密封类作为受限类型层级

专业/工作 · 75

内容

密封类是枚举类型的扩展:枚举的取值集合固定且只有一个实例,密封类的子类则可以携带各自状态、允许多个实例,本质是把”只能是这几种情况之一”的约束从值扩展到类型层级。声明需要sealed修饰符,且所有子类必须在同一文件中声明,这正是为了让编译器能穷举全部子类型。它真正的价值要配合[[when表达式的穷尽性检查]]体现:when分支覆盖全部子类型时可省略else,新增子类型若某处遗漏分支会在编译期直接报错。

参考来源

《Kotlin开发快速入门与实战》第5章《Kotlin面向对象》