📜  你必须知道的Java 17 的 5 大特性

📅  最后修改于: 2022-05-13 01:55:26.633000             🧑  作者: Mango

你必须知道的Java 17 的 5 大特性

变化是唯一不变的东西,根据达尔文的适者生存理论,适应不断变化的世界的个人将长期维持自己。看起来这个理论也适用于Java ,因为它不断发展并服务了二十多年。从 JDK 1.0 到Java 17 (LTS) ,它已经走过了漫长的道路。 Java 17是 SE 平台的最新长期支持 (LTS) 版本。它于 2021 年 9 月 15 日发布,并提供了一系列我们不应该放弃探索的功能。

你必须知道的 Java-17 的前 5 个功能

在任何编程语言中添加功能都可以提高其性能,从而使代码复杂性变得容易。例如,C# 最初是Java的克隆,但向其添加更多特性后,C# 诞生了。虽然Java 17 中引入了许多功能,但让我们来谈谈其中的一些。在本文中,我们将讨论Java 17 的 5 大特性。

1. 使用密封类和接口限制实现

密封类JDK 15中的预览功能,现在它们已成为 JDK 17 中的完整功能。引入继承时,人们意见不一,因为它没有限制实现的数量。密封类结束了这一点,因为它是一个可以限制实现的特性。切入正题,密封类赋予我们控制哪些类或模型可以分别实现或扩展该接口或类的特权。它表示提供对继承的控制的受限类层次结构。对于密封类,需要在编译时知道所有直接子类,并且第三方客户端不能在其代码中扩展密封类。要创建一个Java类,一个密封的Java类,在其声明中添加密封修饰符,并放置关键字 permit 以指示给定密封类允许的类。

密封类 Fruit 指定三个允许的子类,Square、Rectangle 和 Circle:

2. 在 Switch Case 中使用 Null 现在是合法的

以前,在 switch 语句和表达式中保持选择器表达式为 null用于抛出 NullPointerException ,我们基本上必须抛出 Null 指针异常以更安全。为了解决这个问题, Java 17提出了一个功能,我们可以将null 作为选择器表达式放在 switch case 表达式中。考虑下面的示例,我们可以将 null 作为选择器表达式传递

在这里,checkNumber 变量获取一个数字作为输入。如果 null 作为输入传递,“未定义”将显示为输出。请注意,对于案例 1,7 和案例 2,8,其他奇数和偶数也将在选择器表达式中采用,以便代码正常运行。为了保持示例的简单性,只取了几个。

3.空指针异常原因猜测结束

无论是使用链表还是只是引用对象的代码片段,总是存在引用空对象的风险,如果处理不当,可能会使事情归零。调试和Java日志可以提供帮助,但调试本身是一项耗时的任务,并且Java日志并不擅长提供有关导致NullPointerException的罪魁祸首对象的详细信息。在这里, Java 17 的NullPointerException 指导功能确实是一个朋友,因为它提供了异常堆栈跟踪中为 null 的变量的确切名称。因此,此功能使我们免于调试麻烦,并结束了找出指针为空的猜谜游戏。

4. 重新定义 Switch 语句表达式

在多行switch-case 语句中忘记一个中断根本不是一个受欢迎的客人。此外,在处理许多 switch 案例时,case-break-case-break 模式似乎不是一个好协议。是的,现在我们不必频繁使用 break 来进行 break 了! Java解决了我们的问题,在这里我们展示了Java 17 中新的 switch 语句表达式。新的 switch 表达式更不容易出错,因为它现在更简洁。箭头符号的使用不仅消除了贯穿功能,而且使其更具可读性和易于调试。

我们可以在同一个块中包含多个值,用逗号分隔它们。其中一项重要功能是引入了yield 关键字。在代码片段中,在执行默认语句时,System.out.println() 将执行,并且 identifyTyres 变量最终将成为“未知车辆”,因为这是默认值的意思。

5. 使用记录类减少代码行

记录类Java 14中进行了预览。使用 Records 实现时,复杂且最丑陋的POJO代码看起来更好。它们都是不可变的和最终的。 Record 的字段创建后不能更改,Records 类的扩展也是不允许的。它们是管理 POJO 样板代码的纯数据类。当我们只想暂时保存不可变数据时,记录非常有用。在代码片段中,Data 是一条记录,a 和 b 被称为 Data 记录的组件。在定义记录时,我们得到了一个已经实现的equals() 方法、hashcode() 方法和一个toString() 方法实现来打印记录组件以及组件名称。

上面的 Record Data 等价于以下几行代码:

以上是Java 17 LTE 的 Top 5 特性。点击这里探索Java 17的更多炫酷特性。让我们承认,我们总是热衷于新功能,无论是手机、电视、洗衣机等等。在这种情况下, Java也不例外,它总是以改进和引入新功能让我们感到惊讶。在Java代码中试验新功能不仅可以增强我们在Java领域的知识,还可以让我们有动力学习和提升自己的技能。 Java 17 LTE大受好评,因为这些功能是可以接受的,并且使Java开发人员的任务更容易。