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

Java でのパターン マッチングを理解する

2024 年 7 月 31 日に公開
ブラウズ:263

Understanding Pattern Matching in Java

パターン マッチングは、Java に導入された強力な機能で、コードを簡素化し、読みやすさを向上させることができます。最初に Java 14 で instanceof チェック用に導入され、後のバージョンで拡張されたパターン マッチングにより、ボイラープレートを削減することで、より表現力豊かで簡潔なコードが可能になります。

パターンマッチングとは何ですか?

パターン マッチングを使用すると、オブジェクトからコンポーネントを抽出し、特定の条件を簡潔な方法で適用できます。これは、パターンに対して値をチェックし、一致が成功した場合はパターンから変数をバインドする機能です。

パターンマッチングの利点

  1. 簡潔なコード: 定型コードを削減し、プログラムを短くして読みやすくします。
  2. 可読性の向上: 構造がより明確になり、コードの明瞭さが向上します。
  3. 型安全性: 変数が正しく型指定されていることを保証し、実行時エラーの可能性を減らします。

インスタンスオブによるパターンマッチング

パターン マッチングの最も一般的な使用法の 1 つは、instanceof 演算子を使用したものです。以下に例を示します:

public class PatternMatchingExample {
    public static void main(String[] args) {
        Object obj = "Hello, World!";

        if (obj instanceof String s) {
            System.out.println("The string is: "   s);
        } else {
            System.out.println("Not a string");
        }
    }
}

この例では、instanceof 演算子は、obj が String かどうかをチェックするだけでなく、それを String にキャストし、それを 1 つのステップで変数 s にバインドします。

Switch 式を使用したパターン マッチング

パターン マッチングはスイッチ表現にも使用され、その力と柔軟性を高めます。以下はシールされたクラスを使用した例です:

public sealed class Shape permits Circle, Rectangle, Square {}

public final class Circle extends Shape {
    private final double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    public double radius() { return radius; }
}

public final class Rectangle extends Shape {
    private final double width, height;

    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    public double width() { return width; }
    public double height() { return height; }
}

public final class Square extends Shape {
    private final double side;

    public Square(double side) {
        this.side = side;
    }

    public double side() { return side; }
}

public class PatternMatchingWithSwitch {
    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 オブジェクトを構造解除し、関連データを抽出します。

結論

Java のパターン マッチングは、コードに新しいレベルの表現力と単純さをもたらします。定型文を減らして可読性を高めることにより、よりクリーンで保守しやすいプログラムを作成できるようになります。複雑なデータ構造を扱う場合でも、単に型チェックを合理化しようとしている場合でも、パターン マッチングは Java ツールキットの貴重なツールです。

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

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

Copyright© 2022 湘ICP备2022001581号-3