Java 14 で型のキャストと抽出にパターン マッチングを使用する方法
非常に強力な機能であるパターン マッチングが Java 14 で導入されました。この機能により、特にキャストや型の抽出を実行する場合に、型の判断がより簡潔かつ便利になります。この記事では、パターン マッチングを使用して Java 14 で型のキャストと抽出を実行する方法を紹介し、コード例で説明します。
以前の Java バージョンでは、通常、型のキャストと抽出を実行するために 2 つの手順を実行する必要がありました。まず、instanceof キーワードを使用してオブジェクトの型を確認し、キャストを使用してそれをターゲットの型に変換する必要があります。このアプローチは、特に複雑なオブジェクトの関係を扱う場合、非常に面倒でエラーが発生しやすくなります。
Java 14 のパターン マッチングでは、switch ステートメントに新しい instanceof 構文とパターン マッチングを導入することで、型決定のプロセスが簡素化されています。それらの使用方法を理解するために、いくつかの例を見てみましょう。
まず、簡単な例を考えてみましょう。抽象クラス Shape があり、このクラスには area と呼ばれるメソッドが含まれており、さまざまな形状に基づいて面積を計算する必要があるとします。円、長方形、三角形など、いくつかの特定の形状クラスを定義できます。
abstract class Shape { abstract double area(); } class Circle extends Shape { double radius; Circle(double radius) { this.radius = radius; } double area() { return Math.PI * radius * radius; } } class Rectangle extends Shape { double width; double height; Rectangle(double width, double height) { this.width = width; this.height = height; } double area() { return width * height; } } class Triangle extends Shape { double base; double height; Triangle(double base, double height) { this.base = base; this.height = height; } double area() { return 0.5 * base * height; } }
以前の Java バージョンでは、特定のシェイプ タイプをチェックし、キャスト タイプ変換を実行するために、instanceof を使用する必要がよくありました。
Shape shape = ...; // 初始化一个形状对象 if (shape instanceof Circle) { Circle circle = (Circle) shape; // 强制类型转换 double area = circle.area(); // 其他处理... } else if (shape instanceof Rectangle) { Rectangle rectangle = (Rectangle) shape; double area = rectangle.area(); // 其他处理... } else if (shape instanceof Triangle) { Triangle triangle = (Triangle) shape; double area = triangle.area(); // 其他处理... }
Java 14 では、新しい instanceof 構文を使用して、さらに多くのことを実行できます。簡潔なコード記述:
Shape shape = ...; // 初始化一个形状对象 if (shape instanceof Circle circle) { double area = circle.area(); // 其他处理... } else if (shape instanceof Rectangle rectangle) { double area = rectangle.area(); // 其他处理... } else if (shape instanceof Triangle triangle) { double area = triangle.area(); // 其他处理... }
この新しい構文では、キャスト コードをinstanceofの右側に移動し、後続のコードとtriangleでローカル変数circleとrectangleを直接使用できます。この利点は、これらのローカル変数を明示的に宣言する必要がなくなり、コードの単純さと読みやすさが向上することです。
パターン マッチングは、条件文での型判定に加えて、switch 文でも使用できます。以前の Java バージョンでは、switch ステートメントの場合の照合には定数のみを使用できました。 Java 14 では、型パターンを使用して照合できます。例を見てみましょう:
Shape shape = ...; // 初始化一个形状对象 switch (shape) { case Circle circle -> { double area = circle.area(); // 其他处理... } case Rectangle rectangle -> { double area = rectangle.area(); // 其他处理... } case Triangle triangle -> { double area = triangle.area(); // 其他处理... } }
この新しい switch ステートメントでは、形状のタイプに応じて照合し、後続のコードでローカル変数の円、長方形、三角形を直接使用できます。このようにして、型チェックと強制的な型変換を繰り返し実行する必要がなくなり、コードの作成とメンテナンスが大幅に簡素化されます。
要約すると、Java 14 で型のキャストと抽出にパターン マッチングを使用すると、コードが大幅に簡素化され、コードの可読性と保守性が向上します。 switch ステートメントに新しい instanceof 構文とパターン マッチングを導入することで、冗長なコードを排除し、型変換エラーを回避できます。
ただし、パターン マッチングは Java 14 以降でのみ使用できることに注意してください。 Java の古いバージョンでは、型の決定と強制に従来の方法を使用する必要があります。したがって、パターン マッチングを使用する場合は、コードが正しい Java バージョンで実行されていることを確認することが重要です。
この記事が、Java 14 のパターン マッチングの理解と使用に役立つことを願っています。明確で簡潔なコードを書くことはすべてのプログラマーが追求することであり、パターン マッチングは Java 言語がこの目標に向けて進むための大きな一歩です。
以上がJava 14 で型のキャストと抽出にパターン マッチングを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。