@Target
@Target注解用于定义注解的使用位置,如果没有该项,表示注解可以用于任何地方。@Target的格式为:
@Target的ElementType取值有以下类型:
TYPE:类,接口或者枚举
FIELD:域,包含枚举常量
METHOD:方法
PARAMETER:参数
CONSTRUCTOR:构造方法
LOCAL_VARIABLE:局部变量
ANNOTATION_TYPE:注解类型
PACKAGE:包
@Retention
@Retention注解用于指明修饰的注解的生存周期,即会保留到哪个阶段。格式为:
RetentionPolicy的取值包含以下三种:
- SOURCE:源码级别保留,编译后即丢弃。
- CLASS:编译级别保留,编译后的class文件中存在,在jvm运行时丢弃,这是默认值。
- RUNTIME:运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用。