乐趣区

关于java:Java15新特性及代码示例

你好啊,我是大阳。

Java 15 于 2020 年 9 月 15 日公布。Java 15 持续反对以前 JDK 版本中的各种预览性能;并且还引入了一些新性能。在这篇文章中,咱们将介绍 增加的一些个性以及一些代码示例。

Java15 的次要更新内容如下:

  • 密封类和接口(预览版)
  • EdDSA 算法
  • 暗藏类
  • 其余

1. 密封类和接口(预览版)

在 Java15 之前,所有的类都能够没有限度地继承其余类 – 除非被继承类被申明为 final 类型,任何类都能够实现公共接口。

当初在 Java15 中,一个类或者接口能够应用修饰符 sealed 申明为密封类或者接口,来限度其继承类。

package cn.dayangshuo;

/**
 * 定义一个形象密封类 Pet,它的实现类只能是 Dog, Cat 这两个,其余的实现类均不容许
 * @author DAYANG
 */
public abstract sealed class Pet
    permits Dog, Cat {}

final class Dog extends Pet {
}

final class Cat extends Pet {}

2. EdDSA 算法

EdDSA (Edwards-Curve Digital Signature Algorithm) 是在 Java 15 中通过 JEP 339 增加的另一种附加数字签名计划。与其余可用的签名计划相比,它提供了更好的性能和平安的签名。

package cn.dayangshuo.collectors;

import java.nio.charset.StandardCharsets;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Signature;
import java.util.Base64;

/**
 * @author DAYANG
 */
public class EdDSATest {public static void main(String[] args) throws Exception {KeyPairGenerator kpg = KeyPairGenerator.getInstance("Ed25519");
        KeyPair kp = kpg.generateKeyPair();

        byte[] msg = "dayang".getBytes(StandardCharsets.UTF_8);

        Signature sig = Signature.getInstance("Ed25519");
        sig.initSign(kp.getPrivate());
        sig.update(msg);
        byte[] s = sig.sign();

        String encodedString = Base64.getEncoder().encodeToString(s);
        System.out.println(encodedString);
    }
}

3. 暗藏类

暗藏类不同于一般的 Java 类。它们不能被其余类的字节码间接应用。暗藏类旨在供在运行时生成类并通过反射间接应用它们的框架应用。

应用暗藏类,不是框架开发人员能够创立外部类看不到的不可发现的类;并且能够显式卸载,而不用放心来自其余类的可能援用。

JVM 反对被动卸载不可发现的类,因而框架能够灵便地定义任意数量的类。

4. 其余

从 Java 15 开始,ZGC (JEP 377) 和 Shenandoah (JEP 379) 不再是试验性功能。默认的 GC 依然是 G1

退出移动版