掌握Java 17的利器:Switch语句升级,模式匹配闪耀登场

简介: 掌握Java 17的利器:Switch语句升级,模式匹配闪耀登场

通过下面这个例子再回忆一下 Java 16 中的 instanceof 增强:

Map<String, Object> data = new HashMap<>();
data.put("key1", "aaa");
data.put("key2", 111);
if (data.get("key1") instanceof String s) {
  log.info(s);
}

上面这个场景里,Map 中的 Value 值存在不同的类型,所以使用 instanceof 来判断取出的 value 是什么类型,然后根据不同类型来进行处理。那么,接下来继续思考一个问题,如果这个 Map 中的 Value 可能有这几种类型:String、Integer、Double,我们需要对不同类型分别做不同的处理,是不是处理结构要这样写:

if (data.get("key") instanceof String s) {
  log.info(s);
} else if (data.get("key") instanceof Double s) {
  log.info(s);
} else if (data.get("key") instanceof Integer s) {
  log.info(s);
}

面对这样的 if 语句结构,看着是不是很难受?根据以往的经验,是不是这个时候想到用 switch 来改进一下呢?但是再琢磨下,发现这里判断的时候又用到了 instanceof,似乎一下又不好下手了?

于是,在面对这种场景的时候,Java 17switch 做了增强,然后我们就可以这样来写:

switch (data.get("key1")) {
  case String s  -> log.info(s);
  case Double d  -> log.info(d.toString());
  case Integer i -> log.info(i.toString());
  default        -> log.info("");
}

有没有一下变得很简洁呢?

这里的几个重点值得关注:

  1. case 条件中直接涵盖了类型的判断和类型的转换
  2. 每个 case 的处理逻辑用 Lambda 语法来实现,可以免去 break 语句

另外,要注意的是,对于 switch 表达式中模式匹配的功能,JDK 17 中的实现还是 preview 版本,所以了解为主,目前还不推荐用于正式环境,不排除后续有进一步改进的可能。

目录
打赏
0
0
0
1
36
分享
相关文章
2025 年 Java 核心技术全面升级与实战应用详解
这份Java校招实操内容结合了最新技术趋势,涵盖核心技术、微服务架构、响应式编程、DevOps及前沿技术等六大模块。从函数式编程到Spring Cloud微服务,再到容器化与Kubernetes部署,帮助你掌握企业级开发技能。同时,提供AI集成、区块链实践和面试技巧,包括高频算法题与系统设计案例。通过学习这些内容,可应对90%以上的Java校招技术面试,并快速上手实际项目开发。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
226 41
|
23天前
|
MinIO Java SDK 7.1.4 升级到 8.5.17 需要注意什么
现在我需要你帮我分析对比这个两个sdk在对外的接口设计上是否有不兼容的变更
83 5
Java基于SaaS模式多租户ERP系统源码
ERP,全称 Enterprise Resource Planning 即企业资源计划。是一种集成化的管理软件系统,它通过信息技术手段,将企业的各个业务流程和资源管理进行整合,以提高企业的运营效率和管理水平,它是一种先进的企业管理理念和信息化管理系统。 适用于小微企业的 SaaS模式多租户ERP管理系统, 采用最新的技术栈开发, 让企业简单上云。专注于小微企业的应用需求,如企业基本的进销存、询价,报价, 采购、销售、MRP生产制造、品质管理、仓库库存管理、财务应收付款, OA办公单据、CRM等。
178 23
深入理解Java锁升级:无锁 → 偏向锁 → 轻量级锁 → 重量级锁(图解+史上最全)
锁状态bits1bit是否是偏向锁2bit锁标志位无锁状态对象的hashCode001偏向锁线程ID101轻量级锁指向栈中锁记录的指针000重量级锁指向互斥量的指针010尼恩提示,讲完 如减少锁粒度、锁粗化、关闭偏向锁(-XX:-UseBiasedLocking)等优化手段 , 可以得到 120分了。如减少锁粒度、锁粗化、关闭偏向锁(-XX:-UseBiasedLocking)等‌。JVM锁的膨胀、锁的内存结构变化相关的面试题,是非常常见的面试题。也是核心面试题。
深入理解Java锁升级:无锁 → 偏向锁 → 轻量级锁 → 重量级锁(图解+史上最全)
|
6月前
|
Java中的控制流语句:if、switch、for、foreach、while、do-while
Java中的控制流语句包括条件判断语句 `if`和 `switch`,以及循环语句 `for`、增强型 `for`(`foreach`)、`while`和 `do-while`。这些语句提供了灵活的方式来控制程序的执行流程,确保代码逻辑清晰且易于维护。掌握这些基本语法,对于编写高效和可读的Java程序至关重要。
240 15
|
8月前
|
java switch case多个条件
通过本文的介绍,我们详细探讨了Java中 `switch case`语句的多种用法和优化方法。从基本语法到合并多个条件,再到使用枚举、常量和函数优化,`switch case`语句在Java编程中提供了一种灵活且高效的控制流方式。掌握这些技巧,能够编写出更加简洁、可读性强的代码,提高开发效率和代码质量。希望本文能为您在实际开发中提供有价值的参考和指导。
632 2
|
8月前
|
java实现“数据平滑升级”
java实现“数据平滑升级”
102 2
🎯Java零基础-Switch条件语句详解 🎯
【10月更文挑战第8天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
149 6
在Java编程中,if-else与switch语句犹如武林高手的剑与刀
【10月更文挑战第3天】在Java编程中,if-else与switch语句犹如武林高手的剑与刀。本文通过示例展示如何巧妙运用这两种工具,提升代码效率与可读性。从精简if-else结构到高效使用switch语句,再到性能考量,帮助你在不同场景下做出最佳选择,让你的程序更加流畅高效。掌握这些技巧,你将在Java世界中游刃有余!
88 2
|
8月前
|
java实现“数据平滑升级”
java实现“数据平滑升级”
66 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问