离谱?7个无法拒绝的理由:从Java 8升级到Java 17!

从Java8到Java20,Java 已经走过了漫长的道路,自Java 8 以来,Java生态系统发生了很多变化。最显着的变化是 Java 的发布节奏。Java 8 于2014年发布,Java 17于2021年发布。这两个版本之间相隔了7年。Java 17是一个长期支持(LTS)的版本,会有更稳定和持久的维护和更新。

如果你和我一样,已经使用Java 8很长时间了,觉得需要了解一下Java的新特性,那么这篇文章就是为你准备的。

自从Java 8以来,Java增加了很多新特性,但并不是所有的特性都有用和受欢迎。所以我整理了一个列表,列出了自Java 8以来Java增加的最受开发者欢迎的特性,你可以用它作为参考来迁移。

1. 局部变量类型推断

这是自 Java 8 以来添加到 Java 中的最受欢迎的功能之一。它允许你在不指定类型的情况下声明局部变量。类型是从表达式的右侧推断出来的。此功能也称为var类型。

3a013914d07866ab784b8c4e46760ab5.png

在上面的示例中,两个程序将生成相同的输出,但在 Java 10 的情况下,我们使用而var不是指定类型。

2. switch表达式

在 Java 14 中使用 switch 表达式时,你不必使用关键字break来跳出 switch 语句或return在每个 switch case 上使用关键字来返回值;相反,你可以返回整个 switch 表达式。这种增强的 switch 表达式使整体代码看起来更清晰,更易于阅读。

推荐划水摸鱼地址:

https://www.yoodb.com/slack-off/home.html

d73e78c132e608c85f8b9f0215243ac5.png

3. 文本块

文本块是 Java 15 中添加的一项新功能。它允许你在不使用转义序列的情况下创建多行字符串。这在你创建 SQL 查询或 JSON 字符串时非常有用。在下面的示例中,你可以看到使用文本块时代码看起来更加简洁。

1b31bc5922133c0e6199bf4930bed725.png

4. Records

记录Records是添加到 Java 14 的一项新功能。它允许你创建用于存储数据的类。它类似于 POJO 类,但代码少得多;大多数开发人员使用 Lombok 生成 POJO 类,但是有了记录,你就不需要使用任何第三方库。在下面的示例中,你可以看到创建记录类所需的代码非常少。

877d7117f69a97002cc1a752640e2e84.png

5. 模式匹配instanceof

模式匹配instanceof是 Java 16 中添加的一项新功能。它允许你将instanceof运算符用作返回已转换对象的表达式。当你使用嵌套的 if-else 语句时,这非常有用。在下面的示例中,你可以看到我们如何使用instanceof运算符来捕获Employee对象,而不是进行显式转换。

a0e53943fd5433139f10572d7ba1c956.png

6. 密封类

密封类是添加到 Java 17 中的一项新功能。它允许你将类或接口的继承限制为一组有限的子类。当你想将类或接口的继承限制为一组有限的子类时,这非常有用。在下面的示例中,你可以看到我们如何使用sealed关键字将类的继承限制为一组有限的子类。

ee934bdc247853163e935cd86ac10b74.png

密封类的子类可以声明为finalnon-sealed。final 子类不能进一步扩展,而非密封子类可以进一步扩展。另外,推荐公众号Java精选,回复java面试,获取在线面试资料,支持随时随地刷题。

7. 有用的 NullPointerException

NullPointerExceptions 是 Java 14 中添加的一项新功能。它允许你获取有关NullPointerExceptions. 这在调试时非常有用NullPointerExceptions。在下面的示例中,你可以看到相同的代码如何NullPointerExceptions在 Java 8 和 Java 14 中生成不同的结果,但在 Java 14 中,你可以获得有关异常的更多信息

3153cc738bdad639da0ed9531fd20f68.png

我没有介绍自 Java 17 以来添加到 Java 的所有功能,但介绍了最流行的功能。如果你想了解更多关于 Java 的新特性,可以查看下面提供的链接。

参考

  • JDK 10 功能 — https://openjdk.org/projects/jdk/10/

  • JDK 11 功能 — https://openjdk.org/projects/jdk/11

  • JDK 12 功能 — https://openjdk.org/projects/jdk/12

  • JDK 13 功能 — https://openjdk.org/projects/jdk/13

  • JDK 14 功能 — https://openjdk.org/projects/jdk/14

  • JDK 15 功能 — https://openjdk.org/projects/jdk/15

  • JDK 16 功能 — https://openjdk.org/projects/jdk/16

  • JDK 17 功能 — https://openjdk.org/projects/jdk/17

来源:程序小媛

原文地址:https://levelup.gitconnected.com/7-reasons-to-migrate-from-java-8-to-java-17-b8cb031b7af8

 
 
公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!
最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!

🔥Java精选面试题🔥(微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!

------ 特别推荐 ------

特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注

点击“阅读原文”,了解更多精彩内容!

文章有帮助的话,点在看,转发吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值