# java17新特性
# Sealed密封类
Sealed Classes(密封类) 特性,它的核心作用是精确控制类的继承关系,解决了传统 final 类(完全不能继承)和普通类(任意类都能继承)的中间态问题,让类的可继承范围变得可控。
# 密封类核心语法
1.定义密封类,使用 sealed 关键字修饰类,通过 permits 明确指定允许继承的子类列表
public sealed class SealedFather permits
SealedSon,SealedSecSOn,SealedThirdSon {}
1
2
2
2.定义密封类的子类
子类必须显式声明自己的 “继承模式”,可选 3 种:
final:完全禁止再继承(最常用);sealed:继续作为密封类,指定新的子类;non-sealed:解除密封,允许任意类继承。
public final class SealedSon extends SealedFather {}
1
public sealed class SealedSecSOn extends SealedFather permits
SealedGrandSon {}
1
2
2
public non-sealed class SealedThirdSon extends SealedFather {}
1
# 【了解】新的随机数生成器
Java 17 引入了全新的随机数生成器 API,提供了更优的性能和更多的算法选择:
// 传统的随机数
Random oldRandom = new Random();
int oldValue = oldRandom.nextInt(100);
// 新的随机数生成器
RandomGenerator generator = RandomGenerator.of("L32X64MixRandom");
int newValue = generator.nextInt(100);
1
2
3
4
5
6
7
2
3
4
5
6
7