注释源保留策略
2022-09-01 13:20:53
来自 Java 文档:
CLASS:注释将由编译器记录在类文件中,但不需要在运行时由 VM 保留。
运行时:注释由编译器记录在类文件中,并在运行时由 VM 保留,因此可以反射性地读取它们。
源:编译器将丢弃注释。
我了解 RUNTIME(以便使用带有反射的注释)和 CLASS(用于编译器)的用法,但我不明白何时可以使用它
@Retention(保留策略.源)
你能解释一下吗?
来自 Java 文档:
CLASS:注释将由编译器记录在类文件中,但不需要在运行时由 VM 保留。
运行时:注释由编译器记录在类文件中,并在运行时由 VM 保留,因此可以反射性地读取它们。
源:编译器将丢弃注释。
我了解 RUNTIME(以便使用带有反射的注释)和 CLASS(用于编译器)的用法,但我不明白何时可以使用它
@Retention(保留策略.源)
你能解释一下吗?
像@SuppressWarnings,@Override这样的东西是编译器使用的注释 - 运行时不需要。对于那些保留政策.SOURCE来说,这是有意义的。此外,注释也可用于生成代码(查看Spring ROO) - 在运行时也不需要这样的注释。
这个答案非常有道理 - https://stackoverflow.com/a/43910948/3009968。
您不希望包含依赖项,其预期效果甚至在编译代码之前就已实现。例如 @SuppressWarnings
您不希望包含编译器用来生成代码但在运行时根本不需要的依赖项。例如,正如在前面的答案中已经提到的 - 春天的roo。