在 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) {
}
记录类型使得创建和使用不可变对象更加方便,提高了代码的可读性和可维护性。