密封類別在 Java 15 中作為預覽功能引入,並在 Java 17 中永久保留,允許開發人員控制哪些類別可以擴展或實現它們。此功能是 Amber 專案的一部分,該專案旨在透過使用小而強大的功能來增強 Java 語言來提高開發人員的工作效率。
密封類是一種新的類,它限制其他類或介面可以擴展或實現它們。這樣做是為了提供更健壯且可維護的類型層次結構。當您定義密封類別時,您指定了一組允許的子類別。
要定義密封類,請使用 seal 關鍵字並使用 Permits 子句指定允許的子類別。這是一個例子:
public sealed class Shape permits Circle, Rectangle, Square { // class body } public final class Circle extends Shape { // class body } public final class Rectangle extends Shape { // class body } public final class Square extends Shape { // class body }
在此範例中,Shape 是一個密封類,僅允許 Circle、Rectangle 和 Square 擴展它。每個子類別必須是最終的、密封的或非密封的。
密封類別可用於對子類別集已知且固定的分層結構進行建模。這在領域建模和使用代數資料類型時特別有用。
這是使用具有模式匹配的密封類別的範例:
public class SealedClassExample { public static void main(String[] args) { Shape shape = new Circle(5); String result = switch (shape) { case Circle c -> "Circle with radius " + c.radius(); case Rectangle r -> "Rectangle with width " + r.width() + " and height " + r.height(); case Square s -> "Square with side " + s.side(); }; System.out.println(result); } }
在此範例中,我們使用 switch 表達式來處理不同類型的 Shape。因為 Shape 是密封的,所以編譯器可以確保覆蓋所有可能的情況。
密封類別是 Java 的強大補充,可以更好地控制類別層次結構並增強程式碼的可讀性和可維護性。透過使用密封類,您可以在 Java 應用程式中建立更健全且定義良好的類型系統。
以上是掌握 Java 中的密封類的詳細內容。更多資訊請關注PHP中文網其他相關文章!