不同的保留政策如何影响我的注释?

2022-01-13 00:00:00 annotations java

任何人都可以清楚地解释 java.lang.annotation.RetentionPolicy 常量 SOURCECLASSCLASS 之间的实际区别吗?代码>运行时间?

我也不确定保留注释"这个短语是什么意思.

解决方案

  • RetentionPolicy.SOURCE:丢弃期间编译.这些注释不编译后有意义已完成,因此它们不会被写入字节码.
    示例:@Override@SuppressWarnings

  • RetentionPolicy.CLASS:丢弃期间类负载.做的时候有用字节码级后处理.有点意外,这是默认.

  • RetentionPolicy.RUNTIME:不要丢弃.注释应该是可在运行时进行反射.示例:@Deprecated

来源:旧网址现已失效

Can anyone explain in a clear way the practical differences between the java.lang.annotation.RetentionPolicy constants SOURCE, CLASS, and RUNTIME?

I'm also not exactly sure what the phrase "retaining annotation" means.

解决方案

  • RetentionPolicy.SOURCE: Discard during the compile. These annotations don't make any sense after the compile has completed, so they aren't written to the bytecode.
    Example: @Override, @SuppressWarnings

  • RetentionPolicy.CLASS: Discard during class load. Useful when doing bytecode-level post-processing. Somewhat surprisingly, this is the default.

  • RetentionPolicy.RUNTIME: Do not discard. The annotation should be available for reflection at runtime. Example: @Deprecated

Source: The old URL is dead now hunter_meta and replaced with hunter-meta-2-098036. In case even this goes down, I am uploading the image of the page.

Image (Right Click and Select 'Open Image in New Tab/Window')

相关文章