Java 15同样也是一个短期支持版,其目的还是以功能稳定和功能演化为主。在Java 15中之前版本中的大部分功能还都依旧保持着预览版的状态,真正能够进入稳定状态的功能并不多。
本系列的文章有:
- Java 8的新特性
- Java 9的新特性
- Java 10的新特性
- Java 11的新特性
- Java 12的新特性
- Java 13的新特性
- Java 14的新特性
- Java 15的新特性
- Java 16的新特性
- Java 17的新特性
- Java 18的新特性
- Java 19的新特性
- Java 20的新特性
- Java 21的新特性
隐藏类
隐藏类的设计目标是允许运行时创建不可被发现的类。这种类不可以被其他类链接,也不能被反射所发现。隐藏类的生命周期通常比较短,而且主要用于框架设计。因为在框架中使用隐藏类可以避免框架用户直接调用框架内部的类。
隐藏类只能使用反射来创建,以下是创建隐藏类的示例。
|
|
文本块
在经历了Java 13和Java 14两个版本的预览,文本块功能在Java 15中获得了转正。现在文本块功能已经足够稳定并且可以在生产环境下使用了。
文本块的功能相较之前两个预览版没有发生什么变化,所以具体使用可以参考之前Java版本特性叙述中的示例。
预览版功能
密封类
密封类提供了对于继承的更细粒度的控制。密封类可以允许指定的类成为密封类的子类,从而严格控制子类的存在。为了实现密封类,Java 15引入了三个新的关键字:sealed
、non-sealed
和permits
。
密封类的创建和使用必须遵循以下几条规则。
- 密封类和被允许的子类必须位于同一个模块中,如果没有定义模块,则必须位于同一个包中。
- 被允许的子类必须直接继承密封类。
- 被允许的子类必须显式声明它如何继续控制继承性,可用的关键字有
final
、sealed
和non-sealed
。- 被允许的子类可以选择使用
final
修饰,这样这个子类就不能再被继承了。 - 被允许的子类可以选择使用
sealed
修饰,这样这个子类就将依旧需要使用permits
来控制其子类。 - 被允许的子类可以选择使用
non-sealed
修饰,这样这个子类将完全对任何继承开放。
- 被允许的子类可以选择使用
以下是密封类规则的示例。
|
|
其他预览版功能
以下这些预览版功能还依旧在之前版本基础之上继续发展,尚未进入到完全稳定的状态。
- instanceOf模式匹配。
- 记录类。
- 外部内存访问。