JDK1.8源代码
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
ElementType[] value();
}
1、Target
枚举中的值:
public enum ElementType {
TYPE,
FIELD,
METHOD,
PARAMETER,
CONSTRUCTOR,
LOCAL_VARIABLE,
ANNOTATION_TYPE,
PACKAGE,
TYPE_PARAMETER,
TYPE_USE
}
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
该注解可以出现在类上、字段上、方法上、构造方法上、局部变量上等等。
2、Retention
枚举中的值:
public enum RetentionPolicy {
SOURCE,
CLASS,
RUNTIME
}
该注解用来标注“被标注的注解”最终保存在什么地方:
@Retention(RetentionPolicy.SOURCE) //表示该注解只能被保留在java源文件中。
@Retention(RetentionPolicy.CLASS) //表示该注解被保存在class文件中。
@Retention(RetentionPolicy.RUNTIME) //表示该注解被保存在class文件中,并且可以被反射机制所读取。