登录
首页 >  文章 >  java教程

Java 21 中 Switch 的模式匹配

来源:dev.to

时间:2024-07-18 16:19:08 475浏览 收藏

文章小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Java 21 中 Switch 的模式匹配》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


Java 21 中 Switch 的模式匹配

模式匹配一​​直是 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 接受一个 object 并根据其类型返回一个格式化字符串。以下是正在发生的事情的详细信息:

  1. switch 表达式:switch 表达式采用 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. switch 表达式: calculatearea 方法使用 switch 表达式来确定 shape 的类型并计算其面积。
  3. 案例模式:每种案例都匹配特定的形状类型并执行相应的面积计算:
    • circle c:如果shapecircle,则匹配并将其绑定到c,使用c.radius计算面积
    • square s:如果shapesquare,则匹配并将其绑定到s,使用s.side计算面积
    • 矩形 r:如果shape矩形,则匹配并将其绑定到r,使用r.lengthr.width计算面积。

结论

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

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

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

声明:本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>