パターン マッチングは、Java に導入された強力な機能で、コードを簡素化し、読みやすさを向上させることができます。最初に Java 14 で instanceof チェック用に導入され、後のバージョンで拡張されたパターン マッチングにより、ボイラープレートを削減することで、より表現力豊かで簡潔なコードが可能になります。
パターン マッチングを使用すると、オブジェクトからコンポーネントを抽出し、特定の条件を簡潔な方法で適用できます。これは、パターンに対して値をチェックし、一致が成功した場合はパターンから変数をバインドする機能です。
パターン マッチングの最も一般的な使用法の 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 にバインドします。
パターン マッチングはスイッチ表現にも使用され、その力と柔軟性を高めます。以下はシールされたクラスを使用した例です:
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 ツールキットの貴重なツールです。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3