定义:定义在注解上的注解
@Target:表示该注解作用在什么上面(位置),默认注解可以在任何位置. 值为:ElementType的枚举值
METHOD:方法
TYPE:类 接口
FIELD:字段
CONSTRUCTOR:构造方法声明
@Retention:定义该注解保留到那个代码阶段, 值为:RetentionPolicy类型,默认只在源码阶段保留
SOURCE:只在源码上保留(默认)
CLASS:在源码和字节码上保留
RUNTIME:在所有的阶段都保留
@Target({ElementType.METHOD,ElementType.TYPE}) // 限制该注解只能在方法上和类上使用 @Retention(RetentionPolicy.RUNTIME) // 设置注解保留到运行阶段 public @interface MyAnnotation { }
@MyAnnotation public class Test { //@MyAnnotation // 编译报错 int num; @MyAnnotation public static void main(String[] args) { //@MyAnnotation // 编译报错 String str; } }