Java 14 新特性

本文介绍了Java 14的重要新特性,包括Pattern Matching for `instanceof`的预览,提供更详细的NullPointerException,Records的预览,Switch Expressions成为标准特性,Text Blocks的第二预览,以及弃用ParallelScavenge + SerialOld GC组合和移除CMS垃圾收集器。这些新特性旨在提升代码的简洁性和安全性,同时改进垃圾回收性能。
摘要由CSDN通过智能技术生成

Java 14 新特性


1. 前言

JDK 14是由JSR 389在Java社区推进中指定的Java SE平台版本14的开源参考实现。已于2020年3月17日正式发布。此版本所包含的JEP(Java增强提案,Java Enhancement Propostal),共16个新特性。其中包含两个孵化器模块(Incubator)、三个预览特性(Preview)、两个弃用功能(Deprecate)和两个删除功能(Remove)

2. 模块说明
  • 孵化器模块(Incubator):将尚未定稿的API和工具先交给开发者使用 ,以获得反馈,并用这些反馈进一步改进Java平台的质量
  • 预览特性(Preview):规格已经成型、实现已经确定,但还未最终定稿的功能。它们出现在Java中的目的是收集在真实世界中使用后的反馈信息,促进这些功能的最终定稿。 这些特性可能会根据开发者的反馈结果,发生改动,甚至可能会被移除(通常预览特性最终都会有所保留)
  • 弃用功能(Deprecate):开发者不应该继续使用这些功能,应当将使用这些功能的现有代码迁移到其他API上
  • 删除功能(Remove):较上一个版本而言,这些功能已经被删除,开发者在这个版本已不能使用该功能
3. 新特性速览

JDK 14新增的16个新特性,有部分与开发者日常编程息息相关,该部分新特性在如下表格中通过标红进行标识,本文主要对标红的JEP进行讲解,表格如下:

NO Title 说明
305 Pattern Matching for instanceof (Preview) instanceof 的模式匹配(预览)
343 Packaging Tool (Incubator) 打包工具(孵化)
345 NUMA-Aware Memory Allocation for G1 G1 的NUMA 内存分配优化
349 JFR Event Streaming JFR事件流
352 Non-Volatile Mapped Byte Buffers 非原子性的字节缓冲区映射
358 Helpful NullPointerExceptions 非常有帮助的空指针异常
359 Records (Preview) Records(预览)
361 Switch Expressions (Standard) Switch 表达式(标准)
362 Deprecate the Solaris and SPARC Ports 弃用 Solaris 和S PARC 端口
363 Remove the Concurrent Mark Sweep (CMS) Garbage Collector 移除 CMS(Concurrent Mark Sweep)垃圾收集器
364 ZGC on macOS macOS 系统上的 ZGC
365 ZGC on Windows Windows 系统上的 ZGC
366 Deprecate the ParallelScavenge + SerialOld GC Combination 弃用 ParallelScavenge + SerialOld GC 组合
367 Remove the Pack200 Tools and API 移除Pack200 Tools和API
368 Text Blocks (Second Preview) 文本块(第二个预览版)
370 Foreign-Memory Access API (Incubator) 外部存储器API(孵化)

4. 详细说明
4.1 Pattern Matching for instanceof (Preview)

instanceof 的模式匹配。使用匹配模式增强Java编程语言中的instanceof操作符。模式匹配允许程序中的共有的逻辑(即从对象中有条件地提取组件)更简洁、更安全地表达。这是JDK 14中的一个预览语言特性。

老版本使用姿势

/**
 * 老版本的instanceof判断后,须显示强转
 */
@Test
public void testOld() {
   
    Object strObj = "Hello Instanceof!";
    if (strObj instanceof String) {
   
    // 显示强转
    String str = (String) strObj;
        System.out.println(str.contains("Hello"));
    }
}

新版本使用姿势

/**
 * 新版本的instanceof的使用,无须显示强转
 */
@Test
public void testNew() {
   
    Object strObj = "Hello Instanceof!";
    if (strObj instanceof String str) {
   
        // 无需显示的进行强转
        System.out.println(str.contains("H
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值