当前位置: 首页 > 后端技术 > Java

Java15新特性及代码示例

时间:2023-04-02 02:10:26 Java

大家好,我是大洋。Java15于2020年9月15日发布。Java15继续支持以前JDK版本的各种预览功能;并且还引入了一些新特性。在本文中,我们将描述一些新增功能以及一些代码示例。Java15的主要更新如下:密封类和接口(预览版)EdDSA算法隐藏类其他1.密封类和接口(预览版)在Java15之前,所有类都可以无限制地继承其他类——除非被继承的类被声明为final并且任何类都可以实现公共接口。现在在Java15中,可以使用修饰符sealed将类或接口声明为密封类或接口,以限制其继承的类。packagecn.dayangshuo;/***定义一个抽象密封类Pet,其实现类只能是Dog、Cat,其他实现类不允许*@authorDAYANG*/publicabstractsealedclassPetpermitsDog,Cat{}final类狗扩展宠物{}最终类猫扩展宠物{}2。EdDSA算法EdDSA(爱德华兹曲线数字签名算法)是通过JEP339在Java15中添加的另一种额外的数字签名方案。与其他可用的签名方案相比,它提供更好的性能和安全的签名。packagecn.dayangshuo.collectors;importjava.nio.charset.StandardCharsets;importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.Signature;importjava.util.Base64;/***@authorDAYANG*/publicclassEdDSATest{publicstaticvoidmain(String[]args)throwsException{KeyPairGeneratorkpg=KeyPairGenerator.getInstance("Ed25519");}KeyPairkp=kpg.generateKeyPair();byte[]msg=“大洋”。getBytes(StandardCharsets.UTF_8);签名sig=Signature.getInstance("Ed25519");sig.initSign(kp.getPrivate());信号更新(味精);byte[]s=sig.sign();StringencodedString=Base64.getEncoder().encodeToString(s);System.out.println(encodedString);}}3。隐藏类隐藏类不同于普通的Java类。它们不能被其他类的字节码直接使用。隐藏类旨在供在运行时生成类并通过反射间接使用它们的框架使用。对于隐藏类,框架开发人员无法创建对外部类不可见的不可发现类;并且可以显式卸载而不用担心来自其他类的可能引用。JVM支持主动卸载不可发现的类,因此框架可以灵活地定义任意数量的类。4.其他从Java15开始,ZGC(JEP377)和Shenandoah(JEP379)不再是实验性特性。默认的GC仍然是G1。