Categories
程式開發

Java新特性前瞻:封印类


本文要点

  • 即将于2020年9月发布的Java SE 15将引入“封印类(sealed class)”(JEP 360),并将其作为预览特性。
  • 封印类是一种类或接口,对哪些类或接口可以扩展它们进行了限制。
  • 封印类就像枚举一样,可以捕获领域模型中的可选项,让程序员和编译器可以控制穷举。
  • 通过解耦可访问性和可扩展性,封印类有助于创建安全的继承结构,让程序库开发人员既可以公开接口,又能够控制所有的实现。
  • 封印类与记录类和模式匹配一起,为以数据为中心的编程模式提供支持。

Java SE 15(即将于2020年9月发布)引入 封印类作为预览特性。封印类和接口对可扩展它们的子类型具有更多的控制权, 这对于一般的领域建模和构建更安全的平台库来说都是很有用的。

我们可以用sealed来声明一个类或接口,这意味着只有一组特定的类或接口可以直接对其进行扩展:

sealed interface Shape 
    permits Circle, Rectangle { ... } 

这段代码声明了一个叫作Shape的封印接口。permits列表限制了只有“Circle”和“Shape”可以实现Shape。(在某些情况下,编译器可以为我们推断出permits子句)。任何其他尝试扩展Shape的类或接口都将收到编译错误(如果你试图通过其他方式生成Shape子类,会在运行时出现错误)。

原文链接:【https://www.infoq.cn/article/x66h5q2sPwSLsmbxkA1T】。未经作者许可,禁止转载。