一、枚举类型——新特性(switch 中的箭头语法)

支持模式匹配

你可以认为模式匹配(pattern matching)是在 switch 关键字上进行了显著的功能扩充。 它是分成了多个模块、 历经了 Java 的多个版本持续实现的。这保证了每个模块在其他模块加入前都可以安全地运行。最后,所有的模块集中到一起,就产生了这个新特性。

这种拆分 现的方式使得人们在面对跨多个版本增加的多个“子特性”时会有点困惑。试图通过逐个分析各个单独模块来理解模式匹配并不是明智的选择。下面将所有支持模式匹配的模块都汇总到了一起——包括最新的 Java17 中增加的部分。

虽然模式匹配和枚举类型并不是绑定的关系,但是它解决了一些曾经由枚举类型来解决的问题。

switch 中的箭头语法

JDK 14 增加了在 switch 中使用一 种不同语法的 case 的能力。在下面的示例中 colons() 用的是旧方式,arrows() 用的是新方式:

ArrowInSwitch.java

import static java.util.stream.IntStream.range;

public class ArrowInSwitch {
    static void colons(int i) {
        switch (i) {
            case 1:
                System.out.println("one");
                break;
            case 2:
                System.out.println("two");
                break;
            case 3:
                System.out.println("three");
                break;
            default:
                System.out.println("default");
        }
    }

    static void arrows(int i) {
        switch (i) {
            case 1 -> System.out.println("one");
            case 2 -> System.out.println("two");
            case 3 -> System.out.println("three");
            default -> System.out.println("default");
        }
    }

    public static void main(String[] args) {
        range(0, 4).forEach(i -> colons(i));
        range(0, 4).forEach(i -> arrows(i));
    }
}

运行结果如下:

在这里插入图片描述

注:未在 IDEA 的 JDK 列表中找到 JDK 14 下载选项,此处使用的是 JDK 20。

在 colons() 中,你可以看到为了防止继续向下执行,每个case语句(除了最后一个default 以外)后面都有必要加上 break。而在我们将 arrows() 中的冒号替换为箭头后, 便不再需要break语句了 然而这只是箭头的一部分功能而已。

你不能在同一个switch中同时使用冒号和箭头。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小熊猫呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值