首页 > 图灵资讯 > 技术篇>正文

探索 Java 21 中 Switch 模式匹配的强大功能

2024-08-18 23:19:39

探索 java 21 中 switch 模式匹配的强大功能

使用 switch 模式匹配的一个流行用例是在程序中处理不同类型的数据。考虑以下内容 weatherstation 这类传感器具有不同类型的传感器,并返回到当前温度:

`公开课气象站{

private Sensor sensor;

 public double getCurrentTemperature() {
    return switch (sensor) {
        case TemperatureSensor t -> t.reading();
        case HumiditySensor h -> h.reading() * 0.9; // apply a 10% moisture correction
        default -> 0.0; // in case of an unhandled sensor type, return 0
    };
}

} ` 在这里,我们可以看到 sensor 接口用于选择器表达式, case 基于特定的标签使用 sensor 实现模式:temperaturesensor 和 humiditysensor。这允许在 switch 不同类型的数据以更简洁、更可读的方式处理。

使用 switch 模式匹配的另一个用例是处理枚举。在引入模式匹配之前,枚举只能用作 case 标签中的常量受到限制 switch 语句中测试的值。借助新功能,现在可以了 case 将枚举限制在标签中,以实现更准确、更灵活的匹配。

公共枚举方向 { 北, 东, 南, 西 } public void move(方向方向) { 切换(方向){ case north,north_west,north_east -> moveup(); case east,east_north,east_south -> moveright(); case south,south_east,south_west -> movedown(); case west,west_north,west_south -> moveleft(); } } 这里,move() 方法使用 switch 根据指定的句子 direction 枚举值很容易处理不同方向的移动。通过模式匹配,我们也可以指定方向组合,例如 north_west 和 east_south,使我们的代码更加强大和灵活。

最后,让我们看看如何帮助模式匹配的示例 switch 句子中的错误处理。在传统的 switch 如果选择器表达式和任何表达式 case 如果标签不匹配,可以默认使用 case 处理错误。但是,在处理多个方面 case 在贴标签的时候,这样可能会很无聊,而且可能会导致代码重复。如果没有模式匹配, case 标签模式与选择器表达式匹配会导致异常,使错误处理更加统一,不易出错。

立即学习“Java免费学习笔记(深入);

public string getplanetaryobject(planetarybody body) { 返回开关(主体){ case planet p && p.getmass() > 1e29 -> p.getname() + " 是一颗气态巨星”; case planet p && p.getmass() > 1e23 -> p.getname() + “是一颗岩石行星”; case star s && s.getluminosity() > 1e32 -> s.getname() + “是明亮的星星”; case star s && s.getluminosity() s.getname() + " 是一颗昏暗的星星。”; 默认 -> throw new matchexception行星物体的类型无法确定:" + body.getname()); }; }

在这个例子中, getplanetaryobject() 接受一种方法 planetarybody 对象,对象可以是行星或恒星。表壳标签中使用的图案考虑了其他条件,如行星的质量或恒星的光度。如果没有模式匹配,就会导致 matchexception,使错误处理更加一致,防止任何潜在错误。

结论 switch 近年来,模式匹配 java 其中介绍的最重要功能之一。它可以使控制流结构更加灵活和简洁。

通过获得 java se 21 专业认证开发人员认证升级您 java 技能。

以上就是探索 Java 21 中 Switch 详细说明模式匹配的强大功能,请关注图灵教育的其他相关文章!

上一篇 如何在 Java Web 应用程序中处理异常?
下一篇 返回列表

文章素材均来源于网络,如有侵权,请联系管理员删除。