通过引入switch表达式来增强Java switch语句

去年12月下旬,我发布了“ Switch Expressions Coming Java? 从那时起,进行了广泛的讨论,表达了意见分歧,现在就Java的switch表达式的未来达成了共识。 我曾尝试在12月的博客文章中评论与switch表达式有关的一些主要发展。 但是,我觉得这周琥珀色观察者邮件列表上的Brian Goetz消息标题“ [switch] switch的进一步统一 ”保证了有关Java switch表达式的新博客文章。

格茨(Goetz)在结束讲话时提醒大家最终游戏不是Java开关表达式 。 相反,Goetz指出:“开关表达式应该只是实现实际目标的无可争议的起点,它是一种更具表现力和灵活性的开关构造,可在更广泛的情况下工作,包括支持模式,并且没有敌意设置为null,用作表达式或语句等。”

格茨还指出,“转机确实带来了很多负担”,他指出,“这种负担在讨论中产生了可预见的干扰。” 格茨指出:“最糟糕的结果是……发明一种与开关相似但不完全相同的新结构……而不能100%替代当今的古怪开关。” 考虑到这种担忧,最初提出的开关表达式语法被舍弃了,因为它使讨论朝着“最糟糕的可能结果”迈进了一步。

新的交换机统一提议(称为“ Unification Attempt#2” [UA2])建议“所有交换机都可以支持旧样式(冒号)或新样式(箭头)大小写标签,但必须坚持一种情况给定开关中的标签。” 这意味着给定switchcase标签必须全部使用我们今天在switch语句中使用的“冒号”语法或新提议的“ arrow”语法,但不能在同一switch同时使用。

开发人员可能会选择一种形式而不是另一种形式(“冒号”与“箭头”),这是有原因的。 Goetz强调了与switch的当前提议相关联的“箭头”语法的一些优点:“以全箭头的形式,人们讨厌开关的所有东西-需要说出中断,失败的风险以及可疑的作用域-所有走开。”

Goetz在本文中介绍了各种“开关形式”的“结构属性”如何驱动“控制流和作用域规则”。 如下表所示。

声明
(“交换机的非本地控制流_out_ [继续到封闭循环,带有标签的中断,返回]”)
表达
(总计:返回一个值)
结肠
(启用穿透)
switch我们知道和“爱”,但增强了 break返回的值类似于return
箭头
(防止掉线)
语句/冒号的“语法简写”(上)以及
  • “消除了“休息”的烦恼”
  • “隐式防止所有形式的失败”
  • “避免了电流开关范围的混乱”
箭头( -> )指向返回值

Goetz总结了上表显示的内容:“冒号形式为您提供了旧的控制流,而箭头形式为您提供了新的控制流。 并且可以用作语句或表达式。 没有人会因为混淆而感到困惑。” 他还特别描述了上表左下角的结构(带有“ arrow”语法的switch语句):“ Switch语句现在具有更简单的(箭头)风格,没有失败,没有奇怪的作用域并且没有大多数时候需要说休息。 可以用这种方式重写许多开关,甚至可以先教这种形式。”

Goetz的总结总结了他的文章:


结果是一个具有现代和传统风格的开关构造,它支持表达式或语句。 您可以立即查看开关的中间,并告诉(通过箭头还是冒号)它是否具有旧版控制流。

迄今为止 ,对拟议的“统一尝试#2”的总体反应是压倒性的,但并非没有预期的持续担忧 。 加文·比尔曼(Gavin Bierman) 总结了这一建议 ,他说:“这实际上是与增强而不是与新结构相对应的一切”,并指出:“在撰写本文时编写修订的规范–准备好!

翻译自: https://www.javacodegeeks.com/2018/04/enhancing-java-switch-statement-with-introduction-of-switch-expression.html

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

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

相关文章

jclouds_jclouds的命令行界面

jclouds序幕 我使用和为jclouds贡献了一年多的时间。 到目前为止,我已经在很多领域广泛使用了它,尤其是在Fuse生态系统中 。 它的强大之处在于它缺少一件事,该工具可用于管理jclouds也提供访问权限的任何云提供商。 类似于EC2命令之类的工具&…

用于从文件读取/写入字符串的新JDK 11文件方法

我之前的文章主要关注可能会添加到JDK 11中的Files.isSameContent()方法。 JDK-8201276 [“(fs)向文件添加方法以从文件读取字符串或向文件写入字符串”]提到了此新方法,并重点介绍了本文的主题: readString(Path) readString(P…

【数字信号处理】离散傅里叶级数(DFS)

周期信号的DFS 周期信号一定 不存在 离散傅里叶变换,通过引入冲激序列,可以进行表示,使得数学运算更加严谨;但一定存在傅里叶级数! 时域周期==>频域离散 时域离散==>频域周期 时域又离散又周期==>频域又周期又离散 联系序列的傅里叶变换DFT理解即可,只不过复指…

java对响应数据做封装_1000种对Java的响应没有死

java对响应数据做封装当一篇评论发表1000条评论时,值得考虑一下。 上周我的社论“ 如果Java即将死,它肯定看起来非常健康 ”在各个开发人员社区中都感到不安 。 在Reddit,Hacker News和Slashdot之间,它收到了1000多个评论。 奇怪…

了解自定义对象创建:JSON绑定概述系列

让我们看一下JSON绑定如何处理自定义对象的创建。 本系列的下一篇文章将介绍如何使用适配器自定义JSON-B。 JSON-B期望所有类都具有一个公共的无参数构造函数 ,该构造函数在反序列化过程中用于实例化目标类。 创建实例后,可通过调用适当的setter方法或…

【数字信号处理】应用FFT计算线性卷积

线性卷积的运算量 DFT的应用方向 一是计算卷积,二是频谱分析,该博客主要讨论前者。通常,信号过系统需要计算卷积,假设 h ( n ) h(n) h(n)的长度为 N N

锁具行业电子工程师岗位职责_赏金猎人招募电子产品开发工程师产品结构工程师...

“赏金猎人”专栏6期来啦!这个专栏,可以让产业需求被更广大的社区看见让社区更多有技能、有解决方案的小伙伴参与进来最终促进科技在传统产业中的应用落地专栏里面发布的猎人需求只要你觉得具备欢迎通过businesschaihuo.org跟我们取得联系今天要发布的是…

hash和hashcode_Hibernate事实:等于和HashCode

hash和hashcode每个Java对象都继承了equals和hashCode方法,但它们仅对Value对象有用,对面向无状态行为的对象没有用。 尽管使用“ ”运算符比较引用很简单,但是对于对象相等而言,事情要复杂一些。 由于您负责告诉平等性对于特定…

4代hiv检测50元_别瞧不起国货!这4个姥姥辈的护肤品,真心好用,还不到50元

在护肤这件事情上,其实最适合我们肤质的护肤品还是我们自己国家的生产的,但是国货这几年的确没有欧美的一些大牌,或者是日韩的护肤品更受到欢迎,国货被淹没的一个主要原,就是因为它的价格太过便宜了,可能老…

了解自定义De / Serializer:JSON绑定概述系列

自定义JSON绑定的最高级方法是使用自定义序列化程序和反序列化程序。 JSON-B序列化器和反序列化器是可用的最低级别的自定义,并且可以访问JSON处理解析器和生成器。 定制的序列化程序必须实现JsonbSerializer接口,并为serialise(&#xff0…

墙面有几种装修方法_新房装修除甲醛 用这几种方法就足够

新房装修后会散发出刺鼻的有害物质,其中甲醛是含量最高,危害最大的有害气体。那怎么才能有效的去除甲醛呢?下面小编就为大家带来新房装修除甲醛的四大方法,希望能给大家带来帮助。新房装修除甲醛方法一:开窗通风法将新房的窗户打…

Parallel Parking of Truck-Trailer Using Multistage Nonlinear MPC之MATLAB simulink编译转换C++代码(内附下载地址)

引言 这个例子展示了如何使用多级非线性模型预测控制(NLMPC)来并行停放卡车-挂车系统。 在本例的应用场景中,卡车-拖车系统(EGO车辆)在停车场行驶。当停车点被定位时,非线性预测控制规划器生成停车路径。然后,自行车使用另一个非线性MPC控制器,沿着规划的路径到达目标姿态…

lambda 加和_流畅和稳定的API的Lambda

lambda 加和几周前,我写了关于Java 8 lambda的介绍 。 在本简介中,我解释了什么是lambda以及如何将它们与Java 8中也引入的新Stream API结合使用。 Stream API为集合提供了更实用的接口。 此接口在很大程度上取决于lambda。 但是,lambda不仅…

攻防世界 适合做桌面_空间“狭小”的二人世界,适合情侣们做浪漫的事情

在最浪漫的11月与它邂逅,有着深秋的枫红、累累的苹果红、还有童话绘本中的苹果屋红,充满着热情活力的色彩,让人感到雀跃。眼瞧见银河的感动。那晚入住于福寿山农场的露营区,位在深山中的它空气轻透又鲜少光害,是观赏星…

使用混合多云每个人都应避免的3个陷阱(第1部分)

每天都在肆意宣传云,但每个人都应避免三个陷阱。 从云,混合云到混合多云,您被告知这是确保业务数字化未来的一种方式。 您必须做出的这些选择不会排除提高客户体验和敏捷交付这些应用程序的日常工作。 让我们开始一段旅程,仔细研…

jquery开关灯案例_全屋开关插座布局讲解,自己规划怕遗漏,手把手教你,很详细...

开关插座是装修内重要的一环,然而也最容易被忽视。装修完住进来后才发现插口不够用,插座被家具挡住,想改还得砸墙,没办法只能用拖线板。然而,满屋都是拖线板,乱糟糟的,看着就惹人烦,…

富贵不压重发_为什么老人常说“贵人不顶重发”,“重发”是什么意思? ?...

"先,""贵人""在我国一般是指有身份有地位有财富的人,而""重发""顾名思义是指头发多的人,那么,老人们为什么会说""贵人不顶重发""呢?有书君认为,可…

java六大原则_六大Java功能

java六大原则我花了无数小时来对不同的应用程序进行故障排除。 通过经验,我可以得出关于大多数开发人员应该远离的几个Java SE功能/ API的结论。 当我提到大多数开发人员时,我会想到常规的Java EE开发人员,而不是库设计人员/基础结构工程师。…

打开虚拟机磁盘类型无效_[图文]VMWARE虚拟机如何打开.VMDK格式的磁盘映像

最近在折腾安卓虚拟机时使用Android x86项目组提供的镜像,架构问题本身无法直接在电脑安装安卓系统。而Android x86项目则是国外团队通过源代码进行移植的版本,虽然不能同步更新但现在也倒是已经 8.1 版。至于折腾安卓虚拟机的原因则是手头的安卓机还是4…

Apache Ivy 2.5.0-rc1发布–现在允许解析器超时

几周前,我们发布了Apache Ivy的2.5.0-rc1版本。 Apache Ivy是一个依赖项管理构建工具,通常与Apache Ant结合使用。 可在项目下载页面上下载 自Apache Ivy的上一版本于2014年12月发布以来,此版本具有重要意义。距上一个正式年份已超过3年。 在…