JDK 14 – JEP 361从预览中切换表达式
在我以前的文章中 ,我写了有关作为JDK 12的预览功能发布的开关表达式和相关增强功能的信息。随后,在JDK 13中提出了一些更改,例如使用yield
关键字从switch块返回值并在预览中发布。
在即将于明年3月在GA上发布的即将发布的JDK 14版本中,这些switch
更改将无法预览,并将永久且永久化。 在本文中,我们将研究两个版本之间的变化,并重新运行我在上一篇关于JDK 14的文章中共享的示例。
切换为表达式
在下面的代码片段中,我们将看到如何将switch
用作表达式,即评估一些条件并返回值:
public static boolean isHealthy(String food){ return switch (food){ case "Fruit" -> true ; case "Vegetable" -> true ; case "Pizza" -> false ; case "Burger" -> false ; case "Pulses" -> true ; case "Soft Drink" -> false ; default -> false ; }; }
我们可以使用字符串文字作为大小写表达式,而在JDK 12之前是不可能的。以上情况可以使用Enums编写,在这种情况下,我们不需要default
块:
public static Boolean isHealthEnumVersion(Food food){ return switch (food){ case Fruit -> true ; case Vegetable -> true ; case Pizza -> false ; case Burger -> false ; case Pulses -> true ; case Soft_Drink -> false ; }; }
Food
枚举定义为:
enum Food { Fruit, Vegetable, Pizza, Burger, Pulses, Soft_Drink }
使用代码块切换表达式以进行案例评估
在前面的示例中,我们看到该case
仅处理单个行表达式。 如果我们想执行多个语句然后返回结果怎么办? 这可以使用yield
关键字实现。
在JDK 12中, break
关键字被重载以返回该值。 但这并不是所有人都喜欢的,因此添加了新的关键字yield
来返回值。
下面的代码段执行一个代码块并返回一个值:
public static PreparedFood prepareFood(Food food){ return switch (food){ case Pizza -> { System.out.println( "doing pizza related operations" ); yield new PreparedFood(food); } case Burger -> { System.out.println( "Doing burger related operations " ); yield new PreparedFood(food); } default -> { System.out. printf ( "Doing %s related operations\n" , food.toString()); yield new PreparedFood(food); } }; }
yield
也可以在旧的switch语法中使用,如下所示:
public static PreparedFood prepareFoodOldSyntax(Food food){ return switch (food){ case Pizza: System.out.println( "doing pizza related operations" ); yield new PreparedFood(food); case Burger: System.out.println( "Doing burger related operations " ); yield new PreparedFood(food); default : System.out. printf ( "Doing %s related operations\n" , food.toString()); yield new PreparedFood(food); }; }
源代码可以在此处的存储库中找到 。
翻译自: https://www.javacodegeeks.com/2020/01/jdk-14-jep-361-switch-expressions-out-from-preview.html
JDK 14 – JEP 361从预览中切换表达式相关推荐
- jep290涉及jdk版本_JDK 14 – JEP 361从预览中切换表达式
jep290涉及jdk版本 在我的前一篇文章中 ,我写了有关作为JDK 12的预览功能发布的开关表达式和相关增强功能的信息.随后,在JDK 13中提出了一些更改,例如使用yield关键字从switch ...
- jdk8切换成jdk6_运行中的JDK语言功能预览:切换表达式
jdk8切换成jdk6 JEP 12 ["预览语言和VM功能"]在其主页上描述如下: 预览语言或VM功能是Java SE平台的一项新功能,该功能已完全指定,完全实现但不是永久性的. ...
- JDK语言功能预览:切换表达式
JEP 12 ["预览语言和VM功能"]在其主页上描述如下: 预览语言或VM功能是Java SE平台的一项新功能,该功能已完全指定,完全实现但不是永久性的. JDK功能发布中提供了 ...
- 运行orbslam2出现 段错误 (核心已转储)_JDK 14已发布快速预览16个新特性
JDK 14已经于2020年3月17日如期发布.本文介绍JDK 14特性. JEP 305: instanceof的模式匹配(预览) 通过对instanceof运算符进行模式匹配来增强Java编程语言 ...
- JDK 14 / JEP 305模式匹配“ Smart Casts”实例
我通常将Java代码中instanceof运算符的存在视为" 红色标志 ",这意味着在某些情况下使用instanceof不一定是错误的,但是使用它有时表示可以以一种更干净的方式解决 ...
- 我的世界1.14java原版命令_我的世界1.14.4第一个预览版发布 添加了debugreport命令...
原标题:我的世界1.14.4第一个预览版发布 添加了debugreport命令 预发布版是Minecraft的测试机制,如果该版本作为正式版发布,那么预发布版的游戏文件将与启动器推送的正式版完全相同. ...
- 解决pdf打印预览中遇到特殊字符,导出失败问题
解决pdf打印预览中遇到特殊字符,导出失败问题 参考文章: (1)解决pdf打印预览中遇到特殊字符,导出失败问题 (2)https://www.cnblogs.com/king-xg/p/697236 ...
- word文档打印预览有阴影_在打印预览中编辑Microsoft Word 2007文档
word文档打印预览有阴影 When working on Word 2007 documents for the office wouldn't it be nice to edit them wh ...
- Excel中如何删除打印预览中最后的空白页?
1.进入"分页预览"模式,方法:在Excel底端,点击右下角分页模式按钮 2.在分页模式下,我们发现有最后一个蓝色边框的空白列,此空白列中标识这空白页的页码,鼠标悬停蓝色边框内,右 ...
最新文章
- 在Spring3中,配置DataSource的方法有五种
- 安卓双摄像头录像_android开发之调用手机的摄像头使用MediaRecorder录像并播放_Android_脚本之家...
- 一文让你了解RT-Thread
- 企业文件存储服务器规划,企业文件存储服务器
- 基于java高德地图经纬度转详细地址和GPS坐标转换为高德地图坐标
- 这几天阿里云发生故障事件,身为程序员慌得一批……
- 对称数 一个整数,它的各位数字如果是左右对称的,则称这个数是对称数。例如:1234321、123321等。
- Busting Frame Busting: a Study of Clickjacking Vulnerabilities on Popular Sites
- 【计算机基础】思维导图
- c语言vc里设置光标位置,VC设置鼠标光标方法
- Velodyne VLP16激光雷达的使用(非常详细)
- 计算机屏幕上怎么会有条竖杠,电脑屏幕出现一条竖线
- 作文提升~老师整理的优美比喻句太实用
- 浙江一盗窃案犯罪嫌疑人陪朋友去警局“打酱油”被抓
- 【深度学习】卷积概念以及卷积核层数
- laravel生成微信公众号带参数二维码并响应扫描带参数二维码
- 【算法】几分钟时间让你彻底学会—时间复杂度
- 计算机网络鲍卫兵答案,之江浙工大之江学院1314(1)课程表校区1.doc
- 网易起花名,阿里赚吆喝
- matlab输入信号,[转]simulink中如何输入信号