繁体   English   中英

注释源保留策略

[英]Annotation SOURCE Retention Policy

来自 Java 文档:

CLASS:注释由编译器记录在 class 文件中,但不需要由 VM 在运行时保留。

RUNTIME:注释由编译器记录在 class 文件中,并在运行时由 VM 保留,因此可以反射式读取。

SOURCE:注释将被编译器丢弃。

我了解 RUNTIME 的用法(以便使用带有反射的注释)和 CLASS(对于编译器)但我不明白什么时候可以使用它

@Retention(RetentionPolicy.SOURCE)

你可以解释吗?

像@SuppressWarnings,@ Override这样的东西是编译器使用的注释 - 在运行时不需要。 对于那些RetentionPolicy.SOURCE会有意义。 注释也可用于生成代码(查看Spring ROO) - 在运行时也不需要这样的注释。

这个答案非常有意义 - https://stackoverflow.com/a/43910948/3009968

您不希望包含一个依赖项,它的预期效果甚至在代码编译之前就已实现。 例如@SuppressWarnings

您不希望包含编译器用来生成代码但在运行时根本不需要的依赖项。 例如,如前一个答案中所述 - spring roo

RetentionPolicy.CLASS - 定义的注释将存储在.class文件中,但在运行时不可用。 如果您根本不指定任何保留策略,则这是默认保留策略。

RetentionPolicy.SOURCE - 编译器在构建代码时将忽略定义的注解。 因此注释仅在源代码中可用,在.class文件中不可用,在运行时也不可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM