「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java の Sealed クラスをマスターする

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

2024 年 8 月 7 日に公開
ブラウズ:910

Mastering Sealed Classes in Java

Sealed クラスは、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 である必要があります。

シールされたクラスの使用

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 アプリケーションでより堅牢で明確に定義された型システムを作成できます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/adaumircosta/mastering-sealed-classes-in-java-3md?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3