gpt4 book ai didi

Java21新特性:switch的模式匹配

转载 作者:我是一只小鸟 更新时间:2023-09-20 15:02:25 34 4
gpt4 key购买 nike

在之前的Java 17新特性中,我们介绍过关于 JEP 406: switch的模式匹配 ,但当时还只是关于此内容的首个预览版本。之后在JDK 18、JDK 19、JDK 20中又都进行了更新和完善。如今,在JDK 21中,该特性得到了最终确定!下面,我们就再正式学习一下该功能! 。

在以往的switch语句中,对于 case 中的类型匹配限制是很多的。比如下面这个例子中的 Map 中可能存储了不同类型的对象,我们要判断的时候,就只能依靠 if-else 来完成.

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

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);
}

                        
                      

现在开始,这样的类型判断关系,就可以简化为如下的 switch 代码:

                        
                          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("");
}

                        
                      

这个功能还是非常有用的,尤其是存在一些抽象封装的时候,可能存在一些父子、兄弟等关系类的时候,为了判断是什么类型,就不用写很多if来处理了,代码简洁度可以得到进一步的优化.

对于上面的例子,还没有升级到Java 17的用户,还涉及两个中间知识点,建议可以补充学习一下:第一个是 Java 16中的instance of增强 ;第二个是 switch中使用Lambda的增强 .

如果您学习过程中如遇困难?可以加入我们超高质量的 技术交流群 ,参与交流与讨论,更好的学习与进步! 。

欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源 。

最后此篇关于Java21新特性:switch的模式匹配的文章就讲到这里了,如果你想了解更多关于Java21新特性:switch的模式匹配的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com