Java 15 でプレビュー機能として導入され、Java 17 で永続化されたシールド クラスにより、開発者はどのクラスを拡張または実装できるかを制御できます。この機能は、小さくても強力な機能で Java 言語を強化することで開発者の生産性を向上させることを目的とした Project Amber の一部です。
Sealed クラスは、他のどのクラスやインターフェイスが拡張または実装できるかを制限する新しい種類のクラスです。これは、より堅牢で保守しやすい型階層を提供するために行われます。シールされたクラスを定義するときは、許可されるサブクラスのセットを指定します。
シールド クラスを定義するには、sealed キーワードを使用し、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 のみがそれを拡張できます。各サブクラスは、final、sealed、または non-sealed である必要があります。
シールされたクラスは、サブクラスのセットが既知で固定されている階層構造をモデル化するために使用できます。これは、ドメイン モデリングや代数データ型を扱う場合に特に役立ちます。
パターン マッチングでシールされたクラスを使用する例を次に示します。
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 がシールされているため、コンパイラは考えられるすべてのケースが確実にカバーされるようにすることができます。
Sealed クラスは Java への強力な追加機能であり、クラス階層の制御を改善し、コードの可読性と保守性を向上させます。シールされたクラスを使用すると、Java アプリケーションでより堅牢で明確に定義された型システムを作成できます。
以上がJava の Sealed クラスをマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。