ホームページ > Java > &#&チュートリアル > Java の Sealed クラスをマスターする

Java の Sealed クラスをマスターする

WBOY
リリース: 2024-07-26 07:43:33
オリジナル
351 人が閲覧しました

Mastering Sealed Classes in Java

Java 15 でプレビュー機能として導入され、Java 17 で永続化されたシールド クラスにより、開発者はどのクラスを拡張または実装できるかを制御できます。この機能は、小さくても強力な機能で Java 言語を強化することで開発者の生産性を向上させることを目的とした Project Amber の一部です。

シールドクラスとは何ですか?

Sealed クラスは、他のどのクラスやインターフェイスが拡張または実装できるかを制限する新しい種類のクラスです。これは、より堅牢で保守しやすい型階層を提供するために行われます。シールされたクラスを定義するときは、許可されるサブクラスのセットを指定します。

Sealed クラスの利点

  1. 制御された継承: シールされたクラスを拡張できるクラスを指定することで、クラス階層をより適切に制御できるようになり、クラス階層が明確に定義され、保守が容易になることが保証されます。
  2. 徹底的なパターン マッチング: シールされたクラスはパターン マッチング機能とうまく連携し、考えられるすべてのケースがカバーされていることをコンパイラーがチェックできるようにします。
  3. 可読性と保守性の向上: 明確に定義された継承構造により、コードの可読性と保守性が向上します。

シールされたクラスの定義

シールド クラスを定義するには、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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート