微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java 15 中的隐藏类是什么?

如何解决java 15 中的隐藏类是什么?

Java 15 中的 Hidden Classes 特性到底是什么?

正如我在 Java 15 文档中读到的那样,SpringHibernate 框架使用了隐藏类?我需要 Spring 和/或 Hibernate 使用的隐藏类的真实示例。

解决方法

要回答这个问题,首先将 Java 语言与 Java 运行时区分开来很重要。前者是程序员编写的“Java 代码”,而后者是人们用来运行以该语言(包括 Kotlin 和 Clojure 等其他语言)编写的代码的“Java 程序”。

在 Java 语言中,定义类的方法有很多种。大多数类都类似于 ArrayList,它们是顶级的并且具有程序员定义的名称。但是其他定义类的方法可能没有简单的名称。例如,匿名内部类并没有为程序员提供给它命名的方法。 Java 8 中引入的 lambda 表达式也是如此。

过去,Java 运行时有一个限制,即所有类都必须有一个名称,并且必须可由运行时公开寻址。这意味着 Java 编译器为匿名内部类提供了一个不太可能与任何其他类的名称冲突的名称,通常带有美元符号,这对于 Java 运行时是合法的类名,但在 Java 语言中是非法的类名。这是一个实现细节。但是因为类都有名字并且都可以通过类加载器寻址,所以抽象是“有漏洞的”;可以通过访问类加载器来解决这些可能隐藏的类。

“隐藏类”是 Java 运行时的一个新 (to Java 15) 特性,是程序定义类加载器上运行的其他类无法处理的类的一种方式。它们仍然有名称,但访问的范围是这样的,它们的存在不能“泄露”到程序的其他部分。它不是新的语言功能,而是编译器(或运行时框架)可以用来实现某些预先存在的语言功能的工具。

对于典型的 Java 程序员来说,这个过程是透明的。除非你的程序编译代码或操作字节码,否则你不需要担心这个实现细节。但对于那些这样做的人来说,这是他们软件工具箱中的宝贵工具。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。