ホームページ > Java > &#&チュートリアル > Java 14 で型のキャストと抽出にパターン マッチングを使用する方法

Java 14 で型のキャストと抽出にパターン マッチングを使用する方法

WBOY
リリース: 2023-08-01 16:01:16
オリジナル
678 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート