我试图了解 Java 1.5 的保留政策。但没有得到清晰的图像。
根据JavaDoc,
CLASS
- 注释将由编译器记录在类文件中,但不需要在运行时由 VM 保留。RUNTIME
- 注释将由编译器记录在类文件中,并在运行时由 VM 保留,因此可以反射性地读取它们。SOURCE
- 注释将被编译器丢弃
- “丢弃”是什么意思?
- 是不是就像类文件中没有特定的注释元素一样,通过用 SOURCE 标记它?
我试图了解 Java 1.5 的保留政策。但没有得到清晰的图像。
根据JavaDoc,
CLASS
- 注释将由编译器记录在类文件中,但不需要在运行时由 VM 保留。RUNTIME
- 注释将由编译器记录在类文件中,并在运行时由 VM 保留,因此可以反射性地读取它们。SOURCE
- 注释将被编译器丢弃SOURCE
注释只存在于源文件中。
当编译器“丢弃”注释时,它本质上忽略了注释甚至存在。源注释基本上与注释代码的目的相同。
带注释的元素不受影响。
@Retention
就是您所说的元注释:它仅适用于其他注释接口。因此,它也只 影响它所应用的注释。
例如,如果您有一个名为的注解,该注解本身@Foo
是用注释,你会得到否定的答案)。@Retention(RetentionPolicy.SOURCE)
@Foo
.class
@Foo
如果您将注释纯粹用于文档目的,或者如果您想通过注释处理(在编译步骤期间)来处理它,这将很有用。
在 Java 编程语言中,注解可以用作源代码中一种特殊形式的句法元数据。类、方法、变量、参数和包可以被注释。注释可以嵌入到编译器生成的类文件中,并且可以被 Java 虚拟机保留,从而影响应用程序的运行时行为。
保留策略确定应在什么时候丢弃注释。具有保留策略 RUNTIME 的注释将通过运行时提供给 JVM。