5

我试图了解 Java 1.5 的保留政策。但没有得到清晰的图像。

根据JavaDoc

  • CLASS- 注释将由编译器记录在类文件中,但不需要在运行时由 VM 保留。
  • RUNTIME- 注释将由编译器记录在类文件中,并在运行时由 VM 保留,因此可以反射性地读取它们。
  • SOURCE- 注释将被编译器丢弃
  1. “丢弃”是什么意思?
  2. 是不是就像类文件中没有特定的注释元素一样,通过用 SOURCE 标记它?
4

3 回答 3

6

SOURCE注释只存在于源文件中。

当编译器“丢弃”注释时,它本质上忽略了注释甚至存在。源注释基本上与注释代码的目的相同。

于 2012-08-09T04:19:39.953 回答
3

带注释的元素不受影响。

@Retention就是您所说的元注释:它适用于其他注释接口。因此,它也 影响它所应用的注释

例如,如果您有一个名为注解,该注解本身@Foo是用注释,你会得到否定的答案)。@Retention(RetentionPolicy.SOURCE)@Foo.class@Foo

如果您将注释纯粹用于文档目的,或者如果您想通过注释处理(在编译步骤期间)来处理它,这将很有用。

于 2012-08-09T04:20:32.070 回答
1

在 Java 编程语言中,注解可以用作源代码中一种特殊形式的句法元数据。类、方法、变量、参数和包可以被注释。注释可以嵌入到编译器生成的类文件中,并且可以被 Java 虚拟机保留,从而影响应用程序的运行时行为。

保留策略确定应在什么时候丢弃注释。具有保留策略 RUNTIME 的注释将通过运行时提供给 JVM。

于 2015-09-15T07:01:07.733 回答