Java 15 隐藏类
Java 15引入了隐藏类,这些类不能直接被其他类的字节码使用。这些隐藏类旨在供在运行时生成类并使用反射来使用的框架使用。
隐藏类被定义为巢基于访问控制上下文的成员,并且可以不受其他类的影响而被卸载。
这个提案,JEP 371,旨在通过提供一个标准的API来定义不可发现且具有有限生命周期的隐藏类来改进JVM上的所有语言。JDK框架或外部框架可以动态生成可以生成隐藏类的类。
JVM语言严重依赖于动态类生成,以提高灵活性和效率。
目标
以下是此增强的目标列表。
-
框架应该能够将类定义为框架的不可发现的实现细节,这些类既不能与其他类链接,也不能使用反射进行发现。
-
扩展访问控制巢以包含不可发现的类。
-
积极卸载隐藏类,这将帮助框架定义尽可能多的隐藏类而不会降低性能。
-
废除非标准的API misc.Unsafe::defineAnonymousClass,以在以后的版本中删除。