java - 类文件中的 InnerClass 属性有什么用?
问题描述
我了解内部类和匿名类是 java 编译器提供的编译时构造。如果是这种情况,为什么类文件必须包含有关在其中声明的内部类的信息。JVM 规范声明:
InnerClasses 属性必须被类文件阅读器识别并正确读取,才能正确实现 Java SE 平台类库
我很难理解这句话的意思。有人可以详细说明这个说法吗?
解决方案
字节码中存储了大量关于 Java 级别特性的元数据,但对字节码执行没有直接影响。由于几个原因,这很有用。首先,Java 有反射库提供对这些信息的访问,因此它必须在运行时以某种方式对 JVM 可用。其次,它允许您针对仅二进制库进行编译。
“无用”功能的另一个示例是 throws 子句(作为可选属性存储在字节码中)。这些是必需的,因此您可以在没有源代码的情况下针对类文件进行编译,但对字节码的执行没有影响。
推荐阅读
- reactjs - 未捕获的类型错误:无法读取未定义的属性“处置”
- raspberry-pi - 如何找到“Exec”节点的命令以在 Node-Red 中对 Raspberry Pi 进行编程?
- javascript - 在没有 jquery 的情况下查找表单输入
- javascript - 如何使用纯 JavaScript 代理 http 请求?
- google-cloud-dataflow - 数据流控制步骤之间的高扇出
- wordpress - wordpress 中的自定义类别和元键搜索
- android - 使用 ffmpeg for Android 编译 x265 并接收错误
- .net - 获取参考 MongoDB 驱动程序 2.7.0
- python - 从 bash 运行 python 解析脚本
- c# - 包含函数在子目录中找不到特定文件