パターン マッチングは、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 ツールキットの貴重なツールです。
以上がJava でのパターン マッチングを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。