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

switch 表达式:switch 表达式采用 obj 并将其与不同的模式进行匹配。
案例模式:每种情况指定一个要匹配的模式:

integer i:如果 obj 是 integer 的实例则匹配,并将值绑定到 i。
long l:如果 obj 是 long 的实例,则匹配并将值绑定到 l。
double d:如果 obj 是 double 的实例,则匹配并将值绑定到 d。
string s:如果 obj 是 string 的实例则匹配,并将值绑定到 s。

默认情况:默认情况处理任何与指定模式不匹配的值,使用 obj.tostring() 将它们转换为字符串。

让我给出详细的示例案例:处理不同的形状
立即学习“Java免费学习笔记(深入)”;

考虑一个场景,您需要处理不同的形状并计算它们的面积。以下是 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;
};
}
登录后复制

在此示例中:

密封类:shape是密封类,只有circle、square和rectangle可以扩展它。
switch 表达式: calculatearea 方法使用 switch 表达式来确定 shape 的类型并计算其面积。
案例模式:每种案例都匹配特定的形状类型并执行相应的面积计算:

circle c:如果shape是circle,则匹配并将其绑定到c,使用c.radius计算面积

square s:如果shape是square,则匹配并将其绑定到s,使用s.side计算面积

矩形 r:如果shape是矩形,则匹配并将其绑定到r,使用r.length和r.width计算面积。

结论

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

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

    以上就是Java 21 中 Switch 的模式匹配的详细内容,更多请关注php中文网其它相关文章!