Java-为什么在.class文件中的局部变量声明中保留注释



我正在通过 HERBER SCHILDT 阅读Java参考。我在一个注释部分中发现了一个注释:

在.class文件中未保留本地变量声明的注释。

为什么在.class文件中未保留注释?

要获得一个具体的原因,您需要与设计该功能的人交谈。

但是,作为一般背景,根据retentionpolicy元拒绝,实际上可以处理注释有三种不同的方法(是的,我故意选择了1.5 Javadoc(:

  • SOURCE意味着注释仅存在于源代码中,并且根本不写入classfile。它是针对改变编译器行为的注释,但对运行程序根本不重要。
  • RUNTIME表示注释以通过反射可见的方式写入classfile。如评论中指出的那样,您无法反思本地变量。
  • CLASS表示注释以程序不可见的方式写入classfile。但是,它们可以由字节码分析仪或classloaders读取。

注释作为类,方法或字段的属性出现在classfile中。自定义类文件格式以来,这些实体附加的属性表的想法已经存在,因此向其添加注释很容易。但是,LocalVariaBletype没有每个可变性的属性。

因此,i 推测 JVM的架构师认为,仅加载时间局部变量注释的好处不值得对用于管理本地变量表的数据结构的更改。

最新更新