元注解:注解的注解 @Target @Retention @Document @Inherited 用于自定义注解
1、@Target 注解的作用目标
2、@Retention 注解的保留策略
3、@Document 注解将被记录在javadoc中
4、@Inherited 子类可以继承父类标注的该注解
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface test{
boolean test() default true;
}
注解目标作用域
@Target(ElementType.TYPE) // 类、接口、枚举、注解
@Target(ElementType.FIELD) // 字段、枚举常量
@Target(ElementType.METHOD) // 方法
@Target(ElementType.PARAMETER) // 方法参数
@Target(ElementType.CONSTRUCTOR) // 构造函数
@Target(ElementType.LOCAL_VARIABLE) // 局部变量
@Target(ElementType.ANNOTATION_TYPE) // 注解
@Target(ElementType.PACKAGE) // 包
@Retention(RetentionPolicy.SOURCE) // 注解只在源码中保留,编译时忽略掉
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class文件保留,运行时不会保留
@Retention(RetentionPolicy.RUNTIME) // 注解会一直保留到运行时,可以通过反射获取到
注解保留时间,生命周期长度 SOURCE < CLASS < RUNTIME
@Documented // 注解会被javadoc记录,包括在生成的API文档中
@Inherited // 标注后,子类可以继承父类的该注解
@interface // 用于声明自定义注解