Skip to content
程序猿DD程序猿DD
主页
最新发布
Java新特性
玩转IDEA
旧版博客open in new window
社区交流open in new window
  • Java 18

    • 指定UTF-8为默认字符集
      • 简单Web服务器
        • 新增@snippet标签
        • Java 17

          • 密封类
            • switch的模式匹配(预览)
            • Java 16

              • record类
                • instanceof增强
                  • Stream转List增强
                    • Stream.toList()的性能比较
                    • Java 15

                      • 文本块
                        • 隐藏类
                        • Java 14

                          • switch表达式增强
                          • Java 13

                            • Java 12

                              • Java 11

                                • 移除JavaEE和CORBA模块
                                • Java 10

                                  • 局部变量的类型推断
                                  • Java 9

                                    • 交互式编程环境JShell
                                      • 不可变集合的快捷创建方法

                                      Java 14 新特性:switch表达式增强

                                      程序猿DD原创2022年5月6日
                                      • Java
                                      • Java 14
                                      大约 1 分钟

                                      # Java 14 新特性:switch表达式增强

                                      面对这样的if语句,你是不是很难受呢?

                                      if (flag == 1) {
                                        log.info("didispace.com: 1");
                                      } else if (flag == 2) {
                                        log.info("didispace.com: 2");
                                      } else if (flag == 3) {
                                        log.info("didispace.com: 3");
                                      } else if (flag == 4) {
                                        log.info("didispace.com: 4");
                                      } else {
                                        log.info("didispace.com: x");
                                      }
                                      

                                      是不是想到用switch来改进一下?

                                      switch(flag) {
                                        case 1: 
                                          log.info("didispace.com: 1"); 
                                          break;
                                        case 2:
                                          log.info("didispace.com: 2");
                                          break;
                                        case 3:
                                          log.info("didispace.com: 3");
                                          break;
                                        case 4:
                                          log.info("didispace.com: 4");
                                          break;
                                        default:
                                          log.info("didispace.com: x");
                                      }
                                      

                                      舒服了吗?是不是感觉还是不那么舒服呢?

                                      试试Java 14中对Switch表达式的增强功能,继续改造:

                                      switch(flag) {
                                        case 1  -> log.info("didispace.com: 1");
                                        case 2  -> log.info("didispace.com: 2");
                                        case 3  -> log.info("didispace.com: 3");
                                        case 4  -> log.info("didispace.com: 4");
                                        default -> log.info("didispace.com: x");
                                      }
                                      

                                      这下是不是舒服了?在Java 14的switch表达式增强中,引入了对Lambda语法的支持,让每个case分支变得更为简洁。同时,容易遗忘的break也可以省略了。

                                      Tips:这里的JEP 361特性,经历了JDK 12、JDK 13两个预览版本之后才在JDK 14中定稿,所以部分功能在JDK 12和JDK 13中也会看到,但真正使用,还是建议在JDK 14之后的版本中应用。

                                      本期视频:https://www.bilibili.com/video/BV1gY411A7kG/open in new window

                                      好了,今天的分享就到这里!如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群open in new window,参与交流与讨论,更好的学习与进步!另外,不要走开,关注我!持续更新Java新特性专栏open in new window!

                                      上次编辑于: 2022/5/21 02:29:53
                                      贡献者: dd
                                      © 2016 - 2022 didispace.com 版权所有
                                      沪ICP备14037150号-3
                                      Copyright © 2022 程序猿DD