[code]
import static java.lang.annotation.ElementType.*;
import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
public @interface TODO{
}
[/code]
特别注意RetentionPolicy.RUNTIME这句,默认情况下RetentionPolicy是RetentionPolicy.class,会保留Annotation,但是在JVM加载的时候并不会读取Annotation。即不能通过反射读取到Annotation信息。
import static java.lang.annotation.ElementType.*;
import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
public @interface TODO{
}
[/code]
特别注意RetentionPolicy.RUNTIME这句,默认情况下RetentionPolicy是RetentionPolicy.class,会保留Annotation,但是在JVM加载的时候并不会读取Annotation。即不能通过反射读取到Annotation信息。
本文深入探讨了Java注解的运行时保留策略,解释了如何使用@Retention(RetentionPolicy.RUNTIME)确保注解信息能够在运行时被JVM读取并通过反射获取。
27万+

被折叠的 条评论
为什么被折叠?



