大家好,欢迎来到IT知识分享网。
依照 6 个月的发布周期,甲骨文预计在 3 月 17 日时推出 Java 14,这个版本有三个主要的更新,第一个便是在 Java 12 新增的预览功能 Switch 表达式,在 Java 14 中成熟成为正式功能,第二个则是新增的语言功能,为 instanceof 增加模式配对,第三个则是 JVM 的功能,提供有用的 NullPointerExceptions 信息。
![Java 14 即将发布,正式加入新的 Switch 表达式插图1 Java 14 即将发布,正式加入新的 Switch 表达式](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
由于 Java 旧的 Switch 表达式有几个问题,因此官方在 Java 12 的时候,加入新的 Switch 表达式语法预览版,要让 Switch 更好用。Switch 表达式语法包含 case 以及 break 陈述式,条件配对由上往下执行,一旦进到特定 case 中,break 陈述式会确保下一个 case 区块不会被执行,但是当开发者忘记写 break,执行流程会继续往下走,直到碰到下一个 break,这个现象被称为穿透(Fall-through)。
而在新的 Switch 表达式中,使用了新的语法来避免穿透发生的可能性,因此能够降低可能产生臭虫的机率。新的 Switch 格式使用 Lambda 风格的语法,该语法由标签和回传值代码间的箭头组成,但官方强调,这个并非真正的 Lambda 表达式,只是类似而已。
![Java 14 即将发布,正式加入新的 Switch 表达式插图3 Java 14 即将发布,正式加入新的 Switch 表达式](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
Java 12 之前,Switch 表达式中每一个 case 只能使用一个标签,因此尽管不同标签的处理逻辑相同,仍需要分开写成两个 case 区块,或是故意利用穿透现象来达成目的,但是故意使用穿透可能会造成误解,因为在部分情况会难以判断缺少 break 陈述式是故意的还是无意的。而在新的 Switch 表达式中,现在可以在 case 使用多个标签处理这样的情况。
官方表示,新的 Switch 表达式也更加详尽安全,当开发者在 Switch 中使用 enum 时,编译器会检查 case 是否列举所有 enum 中的值,当创建的 switch 没有涵盖所有的值,则会出现编译器错误,这个错误可以提醒开发者处理遗漏的情况。
另外,Switch 在 Java 12 之前只是一个陈述式,而现在则可做为一个表达式使用。官方提到,陈述式的本质是动作,而表达式的本质则是请求产生一个值,表达式越基本容易理解,也会使得代码更容易维护。而现在开发者可以把 switch 撰写成简洁的表达式,以更好的表明代码的意图。
Java 14 为 instanceof 加入模式配对,这个功能可减少有条件 instanceof 检查,进行强制转换的需要。模式配对是让开发者能够测试值的样子,并在符合特定规则的时候取出信息,在测试参数以确定其类型时,会经过转换,并宣告区域变数,以便后续利用特定类型进行处理。
这个新的语言功能,则是让开发者从物件中有条件的取出元件变得简单,使语法更加简单可读,官方表示,这个预览功能为广泛的模式配对开了一个门,模式配对的中心思想,就是要提供一个功能,可以简单地根据条件,从物件中取出元件,而 instanceof 运算子就是这样的功能。
![Java 14 即将发布,正式加入新的 Switch 表达式插图5 Java 14 即将发布,正式加入新的 Switch 表达式](https://yundeesoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
Java 14 即将发布,正式加入新的 Switch 表达式
Java 14 加入新的 JVM 功能,让开发者可以获取更多可用于诊断错误的信息,在 Java 14 之前, NullPointerException 信息含糊不清,无法明确的让开发者知道程序问题所在。而现在,信息至少会包含问题发生的位置和原因两类信息。这项功能不止可用于方法调用,还可用于其他可能导致 NullPointerException 的地方,包括栏位存取、阵列存取和赋值。
编辑:AI智慧
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/59257.html