返回介绍

7.6.8 内部类标识符

发布于 2024-10-15 23:56:18 字数 722 浏览 0 评论 0 收藏 0

由于每个类都会生成一个.class 文件,用于容纳与如何创建这个类型的对象有关的所有信息(这种信息产生了一个名为 Class 对象的元类),所以大家或许会猜到内部类也必须生成相应的.class 文件,用来容纳与它们的 Class 对象有关的信息。这些文件或类的名字遵守一种严格的形式:先是封装类的名字,再跟随一个$,再跟随内部类的名字。例如,由 InheritInner.java 创建的.class 文件包括:

InheritInner.class

WithInner$Inner.class

WithInner.class

如果内部类是匿名的,那么编译器会简单地生成数字,把它们作为内部类标识符使用。若内部类嵌套于其他内部类中,则它们的名字简单地追加在一个$以及外部类标识符的后面。

这种生成内部名称的方法除了非常简单和直观以外,也非常“健壮”,可适应大多数场合的要求(注释③)。由于它是 Java 的标准命名机制,所以产生的文件会自动具备“与平台无关”的能力(注意 Java 编译器会根据情况改变内部类,使其在不同的平台中能正常工作)。

③:但在另一方面,由于“$”也是 Unix 外壳的一个元字符,所以有时会在列出.class 文件时遇到麻烦。对一家以 Unix 为基础的公司——Sun——来说,采取这种方案显得有些奇怪。我的猜测是他们根本没有仔细考虑这方面的问题,而是认为我们会将全部注意力自然地放在源码文件上。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文