jep290涉及jdk版本_JDK 14 – JEP 361从预览中切换表达式

jep290涉及jdk版本

在我的前一篇文章中 ,我写了有关作为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

jep290涉及jdk版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java变量作用域Scope

一、变量Scope 作用域同时决定了它的“可见性”以及“存在时间”。在C,C和Java里,作用域是由花括号的位置决定的。变量的作用域分为四个级别:类级、对象实例级、方法级、块级。 二、类级Scope 类级变量又称全局级变量或静态变量&#xff0c…

XML——解析XML文档

【0】README 0.1)本文描述 转自 core java volume 2, 旨在理解 XML——解析XML文档 的基础知识; 0.2) for source code, please visit https://github.com/pacosonTang/core-java-volume/blob/master/coreJavaAdvanced/chapter2…

计算机维修与维护入门,计算机组装与维护基础知识

《计算机组装与维护基础知识》由会员分享,可在线阅读,更多相关《计算机组装与维护基础知识(5页珍藏版)》请在人人文库网上搜索。1、计算机组装与维护基础知识关键考点:CPU主板内存硬盘显卡CMOS硬件组装操作系统学生姓名:总分&…

java oauth2.0_OAuth 2.0 Java指南:5分钟保护您的应用程序安全

java oauth2.0使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护。 今天尝试Okta。 现代应用程序依赖于用户身份验证,但是它可能给Java开发人员带来困难的挑战,以及…

Java编程规范

一、常见命名规则 (1)匈牙利命名法 比 较著名的命名规则是匈牙利命名法,但这种命名法对于跨平台移植简直是灾难。这种命名方法是由Microsoft程序员查尔斯西蒙尼(Charles Simonyi) 提出的。其主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。匈牙利…

XML—— 验证XML文档

【0】README 0.0)本文文字描述转自 core java volume 2 , 旨在理解 XML—— 验证XML文档 的基础知识 0.1)problemsolution (干货——不推荐使用DOM 技术解析XML) 0.1.1)problem:如果仅仅按照…

计算机数据链路层教案,第三章 数据链路层(2) 新.ppt

文档介绍:计算机通信网20112011年教案年教案作者:段景山作者:段景山杨宁杨宁毛玉明毛玉明2第三章数据链路层??链路层功能链路层功能??成帧成帧??差错检测和纠正差错检测和纠正??差控与流控协议差控与流控协议??协议描述与验证协议描述与验证??示例示例?…

java导出javadoc文档

一、注释 (1)文档注释的格式化 生成的文档是 HTML 格式,而这些 HTML 格式的标识符并不是 javadoc 加的,而是我们在写注释的时候写上去的。比如,需要换行时,不是敲入一个回车符,而是写入 <br>&a…

java内核_测量时间:从Java到内核再到

java内核问题陈述 当您深入研究时,即使是最基本的问题也会变得很有趣。 今天,我想深入研究一下Java时间。 我们将从Java API的最基础知识开始,然后逐步降低堆栈:通过OpenJDK源代码glibc一直到Linux内核。 我们将研究各种环境下的性…

XML——文档类型定义(DTD-Document Type Definition)

【0】README 0.1)本文文字描述转自 core java volume 2 , 旨在理解 XML——文档类型定义(DTD-Document Type Definition) 的基础知识; 0.2) for source code, please visit https://github.com/pacosonTa…

职称计算机考试 数量,职称计算机考试WPS基础考点:自动求和

职称计算机考试WPS基础考点:自动求和导语:随着信息技术的发展,计算机日益走进人们的工作、学习和生活,成为专业技术人员不可或缺的工具。下面我们一起来看看职称计算机考试WPS的内容吧。1. 对不相邻单元格的数据求和假如要将单元格…

java静态导入

一、静态导入 在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的。这种新的特性成为静态导入。当你想使用static成员时,可以使用静态导入(在API中的类和…

java流写入数据库_成为Java流大师–第4部分:数据库流

java流写入数据库SQL一直是一种声明性语言,而Java长期以来势在必行。 Java流改变了游戏规则。 通过本动手文章编写您的方式,并学习如何使用Java流对RDBMS数据库执行声明性查询,而无需编写任何SQL代码。 您会发现,Java流和SQL命令的…

XML——XML Schema

【0】README 0.0)本文文字描述转自 core java volume 2 , 旨在理解 XML——XML Schema 的基础知识 ;(本文不涉及源代码, 很遗憾,以后会补充) 【1】XML Schema 相关 1.0)为什么引入…

怎么为pdf文件添加水印?

怎么为pdf文件添加水印?PDF是一种很好用的文件格式,这种格式能够很有效的保护我们的文件,但有时可能还会被破解,这种时候在PDF上添加水印就是比较好的方法。 综上所述,PDF是保密性很强的文件,但添加水印能够…

皖西学院计算机协会组织部,皖西学院

皖西学院关于卢义忠同志兼任安徽省高校后勤协会理事的请示安徽省委组织部:根据《关于进一步规范党政机关和企事业单位领导干部兼任社会组织职务审批管理的通知》(皖组通字〔2016〕40号)等文件精神,经皖西学院党委1月17日研究建议:因校领导分工调整&#…

java 用流创建流_成为Java流大师–第1部分:创建流

java 用流创建流在许多情况下,声明性代码(例如,具有Streams的功能组合)提供了出色的代码指标。 通过该动手实验文章系列进行编码,并成为Java Streams的主教练,从而成为一名更好的Java程序员。 Streams的整…

java的for循环

一、普通for循环(1)for循环语法 for(initialization; condition; update){statements;} (2)语法解释 1、for语句执行时,首先执行初始化操作(initialization)&#xff0c…

XML——使用 XPath来定位信息+使用命名空间

【0】README 0.1)本文文字描述转自 core java volume 2 , 旨在理解 XML——使用 XPath来定位信息使用命名空间 的基础知识 ; 0.2) for detailed XPath info : please visit ( http://www.ruanyifeng.com/blog/2009/…

计算机教室英语怎么读音,网络教室,network classroom,音标,读音,翻译,英文例句,英语词典...

多媒体教室1.多媒体教室基本组成多媒体教室由多媒体计算机、液晶投影机、数字视频展示台、中央控制系统、投影屏幕、音响设备等多种现代教学设备组成。(1)多媒体液晶投影机是整个多媒体演示教室中最重要的也是最昂贵的设备,它连接着计算机系统、所有视频输出系统及数…