首頁 > Java > java教程 > 掌握 Java 中的密封類

掌握 Java 中的密封類

WBOY
發布: 2024-07-26 07:43:33
原創
355 人瀏覽過

Mastering Sealed Classes in Java

密封類別在 Java 15 中作為預覽功能引入,並在 Java 17 中永久保留,允許開發人員控制哪些類別可以擴展或實現它們。此功能是 Amber 專案的一部分,該專案旨在透過使用小而強大的功能來增強 Java 語言來提高開發人員的工作效率。

什麼是密封課程?

密封類是一種新的類,它限制其他類或介面可以擴展或實現它們。這樣做是為了提供更健壯且可維護的類型層次結構。當您定義密封類別時,您指定了一組允許的子類別。

密封課程的好處

  1. 受控繼承:透過指定哪些類別可以擴展密封類,您可以更好地控制類別層次結構,並確保它保持良好定義且易於維護。
  2. 詳盡的模式匹配:密封類別與模式匹配功能配合良好,允許編譯器檢查是否涵蓋了所有可能的情況。
  3. 增強的可讀性和可維護性:明確定義的繼承結構提高了程式碼的可讀性和可維護性。

定義密封類

要定義密封類,請使用 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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板