java7和java8切换_切换表达式到Java吗?
java7和java8切换
已创建一个标题为“ Java语言的开关表达式”的JEP草案 。 当前的“摘要”状态为:“扩展switch
语句,以便可以将其用作语句或表达式,并改善switch
处理null的方式。 这些将简化日常编码,并为在switch
使用模式匹配做好准备。” 除了启用令人兴奋的模式匹配JEP(305)之外,所提议的Java switch
表达式本身还具有一些有希望的特征。
Java教程将Java 语句定义为“大致执行单元”,“大致等同于自然语言中的句子”。 它将Java 表达式定义为“由变量,运算符和方法调用组成的构造,其结果为单个值。” 当前的Java switch
是一条语句 ,但是JEP草案建议将switch
也作为表达式来支持。
JEP的Switch Expression草案在其“动机”部分指出:“当我们准备增强Java语言以支持模式匹配时 ,现有的switch
语句的一些不规则性(长期以来一直困扰着用户)成为障碍。” JEP草案具有很高的可读性,并包含有趣的讨论点和说明性的代码示例,这些示例说明Java switch
语句当前在其他Java构造函数中通常如何有效地用作表达式。 JEP草案显示了将switch
扩展为用作表达式的提议,以及作为语句得到支持的提议,将如何提高代码的可读性和可维护性。
Java表达式需要“求值为单个值”。 当前提出的switch
表达式将允许break
关键字充当Java方法中的return
。 可以在break
关键字之后指定一个值,并且该值将从switch
表达式中“返回”。
因为Java 表达式 “求值为单个值”,所以必须使用用作表达式的Java switch
来提供默认值。 JEP草案中涵盖的一个有趣的转折是枚举。 JEP草案指出:“……对于涵盖所有已知情况的枚举switch
表达式(最终,通过密封类型的switch
表达式),编译器可以插入默认子句,指示枚举定义在两次编译之间已更改时间和运行时间。 (这是开发人员今天手动执行的操作,但是与手工编写的相比,让编译器插入它既不那么具有侵入性,又可能具有更具描述性的错误消息。)“我发现这特别有趣,因为我已经看到很多情况了在这种情况下,开发人员未为枚举上的switch
编写“默认值”,因为当时所有的枚举值都被case
s覆盖,或者编写了非常通用的错误消息。 实际上,碰到后者的多个示例最终使我写了博客文章“ Log Unexpected Switch Options” 。
JEP草案还涵盖了一些建议的增强功能,这些功能将使当前的switch
语句和新的switch
表达式都受益。 其中之一就是能够指示如何处理传递给switch
语句的null
引用类型。 例如,今天,如果将null
String
传递给switch
语句,则会引发NullPointerException
。 有了这个建议,开发人员可以指定case null
子句。 当前的提议将处理任何未明确处理的null
因为今天在switch
会处理null
(通过抛出NullPointerException
)。
针对当前switch
语句和拟议的switch
表达式提出的第二个有益特征是允许单个case
子句支持多个以逗号分隔的潜在匹配值。 可以使用单个case
而不是使用共享单个break
三个case
子句指定适用于相同行为的三个值。
“切换表达式草稿”仍然是一个草稿,甚至没有为其分配编号,因此很容易受到潜在更改的影响。 确实,该建议已在邮件列表中进行了讨论,并进行了相当多的修改,例如“ 切换表达式-一些修订” 。 我在邮件列表中发现一条消息“ 切换float / double / long ”特别有趣。 这个有趣的消息是完整的,技术的或历史的细节,包括为何今天的switch
语句不能long
支持的背景,以及“居民浮点专家” Joe Darcy提供的有关浮点比较的有趣分析。
David Goldberg在1991年发表的文章“ 每位计算机科学家都应了解的浮点算术 ”是了解浮点算术和表示法复杂性的著名资源。 达西(Darcy)对这些问题和IEEE 754浮点提供了一些有趣的见解。 他写道:“为了解决对浮点数的一些常见误解,尽管通常建议*不要*比较浮点数是否相等,但是进行此类比较的定义非常明确,但可能并不能满足您的要求。” Darcy处理NaN
,正零和负零以及正无穷大和负无穷大的处理。 一个有趣的结论是,可以实现允许switch
浮点数字类型float
来真正打开Float.floatToIntBits(float)提供的值 。
如果对Java的switch
进行扩展,以便除了当前用作语句之外,还可以将其用作表达式,则看起来可能会有激动人心的时刻。 这是一个可以导致代码更干净,出错空间更少的开发。
翻译自: https://www.javacodegeeks.com/2017/12/switch-expressions-coming-java.html
java7和java8切换
java7和java8切换_切换表达式到Java吗?相关推荐
- 李兴华java8教程_李兴华Java培训系列详解20套视频教程下载
李兴华Java培训系列详解20套视频教程下载 教程介绍: 李兴华Java培训系列详解20套视频教程分别对Oracle.Java8.JavaScript.XML.AJAX.jQuery.HTML5.St ...
- java 数学表达式解析插件_数学表达式解析-JAVA版
1 .工具介绍 String exp = "v>=10&&v<=2000&&v%10==0"; 在 js 中,能够直接运行 eval 得 ...
- java执行数学表达式_数学表达式解析-JAVA版
1 .工具介绍 String exp = "v>=10&&v<=2000&&v%10==0"; 在 js 中,能够直接运行 eval 得 ...
- java7和java8切换_仍不切换到Java 8的6个理由
java7和java8切换 Java 8很棒. 期. 但是--在我们有机会玩耍并玩弄它之后,就该退出了,避免吃盐. 所有的好东西都是有代价的,在这篇文章中,我将分享Java 8的主要痛点.请确保在升级 ...
- 切换表达式到Java吗?
已创建一个标题为" Java语言的开关表达式"的JEP草案 . 当前的"摘要"状态为:"扩展switch语句,以便可以将其用作语句或表达式,并改善sw ...
- 摘自人民网体育频道的JS卷角翻转方块图片切换_网页代码站(www.webdm.cn)
1 <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...
- 项目中使用 java函数式编程_函数式编程在Java8中使用Lambda表达式进行开发
事情起因 如果不喜欢看故事的同学,请前往下一章节. 事情起因是我打算集成Redis缓存,配置了Redis以后,发现@Cacheable注解始终不生效,折腾了大半天以后,我的心态已经崩了,决定不使用@C ...
- lambda 对象去重_采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集...
采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...
- macf键与功能键切换_功能切换(功能开关或功能标志)与功能分支
macf键与功能键切换 功能分支 如果使用分支,则表示不进行持续集成/部署/交付 ! 您可能具有很好的单元测试 代码覆盖率 ,可能正在执行TDD ,可能已经以BDD格式编写了功能和集成测试,并且可能在 ...
最新文章
- docker omv 防火墙_OpenMediaVault(OMV)配置Docker
- SCI录用的最后一步——答复审稿人的策略和答复信的写作技巧
- LOAD DATA INFILE 语法
- 使用Python批量压缩图片
- structs 1.x 学习
- burpsuite字典破解密码
- SQLyog 安装和配置教程
- Jenkins安装后设置,访问http://localhost:8080进入jenkins解锁,完成安装后的配置
- 通达oa 2013 php解密,通达OA漏洞学习 - 安全先师的个人空间 - OSCHINA - 中文开源技术交流社区...
- 巴蜀1471 魔兽争霸
- 贵阳市交通大数据中心
- 【解题报告】Kattis - adjoin 树形dp
- 高数 | 导数零点定理为什么导数可以不连续?
- 嵌入式论坛展示微控制器、工具、软件、物联网、连接性、安全性
- linux 系统管理员l,系统管理员的 SELinux 指南
- android桌面动画
- 最新水利水电安全员考试判断题库(2)
- 基于springboot的工资管理系统
- 精益生产中的标准化研究
- 【EDA设计笔记】EDA-USB_SPI_FLASH-设计与实现
热门文章
- AT2371-[AGC013E]Placing Squares【矩阵乘法】
- AT4995-[AGC034E] Complete Compress【树形dp】
- P4819-[中山市选]杀人游戏【tarjan】
- P6102-[EER2]谔运算【位运算】
- 欢乐纪中某B组赛【2019.1.29】
- 【jzoj3734,Usaco2014Open银组】双导航(gpsdual)
- 【期望】【高斯消元】图上游走(金牌导航 期望-6)
- 2017西安交大ACM小学期数论 [等差数列]
- 汇编语言(五)之数组中正数和负数分离
- Java GC系列(1):Java垃圾回收简介