Java 16 新特性

网友投稿 278 2022-09-22

Java 16 新特性

文章目录

​​Java 16 新特性​​

​​1、instanceof 模式匹配​​​​2、Records​​​​3、Sealed Classes(密封类)预览​​

Java 16 新特性

Java 16 在 2021 年 3 月 16 日正式发布,在语法上的新特性更新比较多,主要是一些之前版本引入的预览特性正式发布。比如Java14中的打包工具、instanceof、Record类

Java 16 全部的新特性,请看官网:​​JDK 16 发行说明​​

Java各个版本的文档入口:​​Java平台,标准版文档​​

Java各个版本下载:​​模式匹配

改进 ​​instanceof​​ 在 Java 14 中已经提出,在 Java 15 中继续预览,而现在,在 Java 16 中成为正式功能。

在之前,使用 ​​instanceof​​ 需要如下操作:

if (obj instanceof String) { String s = (String) obj; // grr... ...}

多余的类型强制转换,而现在:

if (obj instanceof String s) { // Let pattern matching do the work! ...}

扩展阅读:​​Java 14 新特性介绍 - instanceof​​

2、Records

Record 成为 Java 16 的正式功能,下面是介绍 Java 14 时关于 Record 的介绍。

​​record​​​ 是一种全新的类型,它本质上是一个 ​​final​​​ 类,同时所有的属性都是 ​​final​​​ 修饰,它会自动编译出 ​​public get​​​ ​​hashcode​​​ 、​​equals​​​、​​toString​​ 等方法,减少了代码编写量。

示例:编写一个 Dog record 类,定义 name 和 age 属性。

package com.wlw;public record Dog(String name, Integer age) {}

Record 的使用。

package com.wdbyte;public class Java14Record { public static void main(String[] args) { Dog dog1 = new Dog("牧羊犬", 1); Dog dog2 = new Dog("田园犬", 2); Dog dog3 = new Dog("哈士奇", 3); System.out.println(dog1); System.out.println(dog2); System.out.println(dog3); }}

输出结果:

Dog[name=牧羊犬, age=1]Dog[name=田园犬, age=2]Dog[name=哈士奇, age=3]

这个功能在 Java 15 中进行二次预览,在 Java 16 中正式发布。

3、Sealed Classes(密封类)预览

Sealed Classes 再次预览,在 Java 15 新特性介绍文章里已经介绍过相关功能,并且给出了详细的使用演示,这里不再重复介绍。

下面是一段引用:

我们都知道,在 Java 中如果想让一个类不能被继承和修改,这时我们应该使用 ​​final​​​ 关键字对类进行修饰。不过这种要么可以继承,要么不能继承的机制不够灵活,有些时候我们可能想让某个类可以被某些类型继承,但是又不能随意继承,是做不到的。Java 15 尝试解决这个问题,引入了 ​​sealed​​​ 类,被 ​​sealed​​ 修饰的类可以指定子类。这样这个类就只能被指定的类继承。

而且 ​​sealed​​​ 修饰的类的机制具有传递性,它的子类必须使用指定的关键字进行修饰,且只能是 ​​final​​​、​​sealed​​​、​​non-sealed​​ 三者之一。

扩展阅读:​​Java 15 新特性介绍​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《On Java 8》-赋值(对象传递和返回)(值传递和引用传递)
下一篇:灵魂拷问后 尚纬股份终止收购星空野望 罗永浩“真还传”能续吗!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~