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】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章