首页  >  文章  >  Java  >  Java 21 中 Switch 的模式匹配

Java 21 中 Switch 的模式匹配

王林
王林原创
2024-07-19 00:46:41349浏览

Pattern Matching for Switch in Java 21

模式匹配一​​直是 Java 中备受期待的功能,它为该语言带来了更多的功能和灵活性。 Java 21 引入了 switch 语句的模式匹配,这简化了代码并减少了样板文件。让我们来探讨一下这个新功能的工作原理以及它的好处。

什么是 Switch 的模式匹配?

switch 的模式匹配允许您将值与模式进行匹配,使代码更具表现力和可读性。您现在可以编写更简洁且可维护的代码,而不是使用多个 if-else 语句或复杂的 switch case。

交换机模式匹配的好处

  • 可读性:使代码更易于阅读和理解。
  • 简洁:减少样板代码量。
  • 类型安全:在编译时提供更好的类型检查。

如何使用 Switch 的模式匹配

这是一个简单的示例来说明 switch 的模式匹配如何工作:

static String formatterPatternSwitch(Object obj) {
    return switch (obj) {
        case Integer i -> String.format("int %d", i);
        case Long l    -> String.format("long %d", l);
        case Double d  -> String.format("double %f", d);
        case String s  -> String.format("String %s", s);
        default        -> obj.toString();
    };
}

在此示例中,formatterPatternSwitch 接受一个对象并根据其类型返回一个格式化字符串。以下是所发生事件的详细说明:

  1. 开关表达式:开关表达式采用 obj 并将其与不同的模式进行匹配。
  2. 案例模式:每种案例指定一个要匹配的模式:
    • Integer i:如果 obj 是 Integer 的实例,则匹配并将值绑定到 i。
    • Long l:如果 obj 是 Long 的实例,则匹配并将值绑定到 l。
    • Double d:如果 obj 是 Double 的实例,则匹配并将该值绑定到 d。
    • String s:如果 obj 是 String 的实例则匹配并将值绑定到 s。
  3. 默认情况:默认情况处理任何与指定模式不匹配的值,并使用 obj.toString() 将它们转换为字符串。

让我给出详细的示例案例:处理不同的形状

考虑一个场景,您需要处理不同的形状并计算它们的面积。以下是 switch 的模式匹配如何简化代码:

abstract sealed class Shape permits Circle, Square, Rectangle {}

final class Circle extends Shape {
    double radius;
    Circle(double radius) { this.radius = radius; }
}

final class Square extends Shape {
    double side;
    Square(double side) { this.side = side; }
}

final class Rectangle extends Shape {
    double length, width;
    Rectangle(double length, double width) { this.length = length; this.width = width; }
}

static double calculateArea(Shape shape) {
    return switch (shape) {
        case Circle c -> Math.PI * c.radius * c.radius;
        case Square s -> s.side * s.side;
        case Rectangle r -> r.length * r.width;
    };
}

在此示例中:

  1. 密封类:Shape是一个密封类,只有CircleSquareRectangle可以扩展它。
  2. 开关表达式:calculateArea 方法使用开关表达式来确定 shape 的类型并计算其面积。
  3. 案例模式:每种案例都匹配特定的形状类型并执行相应的面积计算:
    • Circle c:如果 shapeCircle 则匹配并将其绑定到 c,使用 c.radius 计算面积
    • Square s:如果 shapeSquare 则匹配并将其绑定到 s,使用 s.side 计算面积
    • 矩形 r:如果 shape矩形 则匹配并将其绑定到 r,使用 r.length 计算面积r.width.

结论

Java 21 中 switch 的模式匹配是一项强大的功能,可以增强代码的可读性、简洁性和类型安全性。通过允许您直接在 switch 语句中将值与模式进行匹配,它简化了许多常见的编码任务。 Java 开发人员绝对应该探索并采用此功能来编写更干净、更易于维护的代码。

请随意修改或扩展此部分以满足您的需求!

以上是Java 21 中 Switch 的模式匹配的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn