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

时间:2019-05-03 15:13:36

标签: java java-annotations

我正在阅读 Herber Schildt 的Java参考。我在其中一个注释部分找到了一条注释,内容为:

  

.class文件中未保留局部变量声明的注释。

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

1 个答案:

答案 0 :(得分:2)

要弄清具体原因,您需要与设计功能的人员进行交谈。

但是,作为一般背景,请理解,对于RetentionPolicy元注释,实际上可以使用三种不同的方式来处理注释(是的,我有意选择了1.5 JavaDoc):

  • SOURCE意味着注释仅存在于源代码中,而根本不写入类文件中。它用于更改编译器行为的注释,但与正在运行的程序无关。
  • RUNTIME意味着注释以一种通过反射对程序可见的方式写入类文件。如评论中所述,您不能考虑局部变量。
  • CLASS表示将注释以not visible to the program的方式写入类文件。但是,它们可以由字节码分析器或类加载器读取。

注释在类文件中显示为类,方法或字段的属性。自定义类文件格式以来,一直存在与这些实体相连的属性表的想法,因此向它们添加注释很容易。 LocalVariableType但是没有每个变量的属性。

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