Java 17 中的 Switch 表达式模式匹配与记录类型

Switch 表达式模式匹配

在 Java 17 中,switch 表达式得到了增强,引入了模式匹配,使得代码编写更加简洁。以下是一个简单的例子:

package com.lfsun.newswitch;

import static com.lfsun.newswitch.ShapeExample.ShapeType.CIRCLE;
import static com.lfsun.newswitch.ShapeExample.ShapeType.SQUARE;
import static com.lfsun.newswitch.ShapeExample.ShapeType.TRIANGLE;

public class ShapeExample {

    // 定义形状类型
    enum ShapeType {
        CIRCLE, SQUARE, TRIANGLE
    }

    // 定义形状类
    record Shape(ShapeType type) {
    }

    public static void main(String[] args) {
        // 创建不同类型的形状对象
        Shape circle = new Shape(CIRCLE);
        Shape square = new Shape(SQUARE);
        Shape triangle = new Shape(TRIANGLE);

        // 使用 switch 表达式模式匹配判断形状类型
        String resultCircle = getResult(circle);
        String resultSquare = getResult(square);
        String resultTriangle = getResult(triangle);

        // 打印结果
        System.out.println("Circle: " + resultCircle);
        System.out.println("Square: " + resultSquare);
        System.out.println("Triangle: " + resultTriangle);
    }

    // 使用 switch 表达式模式匹配获取形状类型的结果
    private static String getResult(Shape shape) {
        // 不使用 break,每个分支执行后结束
        return switch (shape.type()) {
            case CIRCLE -> "圆形";
            case SQUARE -> "正方形";
            case TRIANGLE -> "三角形";
        };
    }
}

在这个例子中,我们创建了一个 Shape 类,并使用 switch 表达式模式匹配获取形状类型的结果。这使得代码更加紧凑和易读,特别是在处理枚举类型时。

记录类型的简洁性

Java 17 引入的另一个重要特性是记录类型。记录类型是一种简化声明不可变数据类的语法糖。在上述例子中,我们使用了记录类型来定义 Shape 类,省略了繁琐的构造方法、getter 方法和其他样板代码,使代码更加简洁。

record Shape(ShapeType type) {
}

记录类型使得创建和使用不可变对象更加方便,提高了代码的可读性和可维护性。

猜你喜欢

转载自blog.csdn.net/qq_43116031/article/details/135374674