@Target 注解
功能:指明了修饰了这个注解的使用范围,即被描述的注解可以使用在哪里.
@Retention(RetentionPolicy.RUNTIME)
@Target(value={ElementType.METHOD,ElementType.TYPE})
public @interface IgnoreClientToken {
}
ElementType的取值包含以下几种:
- TYPE:类,接口或者枚举
- FIELD:域,包含枚举常量
- METHOD:方法
- PARAMETER:参数
- CONSTRUCTOR:构造方法
- LOCAL-VARIABLE:局部变量
- ANNOTATION_TYPE:注解类型
- PACKAGE:包
@Retention 注解
功能:指明修饰的注解的生存周期,即会保留到哪个阶段
RetentionPolicy的取值范围包含以下三种:
SOURCE:源码级别保留,编译后即丢弃
class:编译级别保留,编译后class文件中存在,在jvm运行时丢弃,这是默认值
runtime:运行级别的保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用.
明确生命周期长度 SOURCE < CLASS < RUNTIME ,所以前者能作用的地方后者一定也能作用。
@Documented 注解
功能:指明修饰的注解,可以被列如javadoc此类的工具文档化,只负责标记,没有成员取值.
@Inherited注解
功能:允许子类继承父类中的注解。
@interface意思是声明一个注解,方法名对应参数名,返回值类型对应参数类型。