[控场AI]
概念Sealed Classes

密封类

Java 17 正式引入的语言特性,通过 permits 子句显式限定允许的子类型,使继承关系受控、封闭,从而支持编译期穷尽性检查。

时间轴 (近 90 天)

10月18日

Java 密封类(Sealed Classes)自 Java 17 正式发布。

待验证50%
10月18日

密封类通过 permits 子句显式声明允许的子类型,将继承关系从开放变为受控。

待验证50%
10月18日

结合密封类,编译器能够验证 switch 的所有 permitted 子类是否都被处理,遗漏子类型会导致编译错误(穷尽性检查)。

待验证50%
10月18日

穷尽性检查只对密封层次有效;对于普通开放接口,编译器仍要求 default 分支。

待验证50%
10月18日

在 switch 中加入 default 分支会关闭穷尽性检查,导致新增子类型不再触发编译错误;因此使用密封类时应避免不必要的 default。

待验证50%
10月18日

密封类的子类型可以携带各自不同的状态和方法,表达力比枚举强;如果只是固定的一组常量,枚举是更轻量的选择。

待验证50%
10月18日

密封类的 permits 子句要求子类必须位于同一模块(或同一包,视模块系统配置而定)。

待验证50%
10月18日

主流 IDE 已支持对密封层次生成缺失分支的提示,配合编译器的穷尽检查形成双重保障。

待验证50%
10月18日

据 Hacker News 讨论,不少开发者认为密封类最有价值的场景是领域建模——用一组封闭变体表达业务状态。

待验证50%

全部知识事实 (9)

来源文章