@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Action { }
1、@interface
@interface Action { } 定义一个注解 @Action,一个注解是一个类。
2、@Target(ElementType.TYPE)
@Target 说明注解所修饰的对象范围。
@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) //包
3、@Retention(RetentionPolicy.RUNTIME)
@Retention(保留)说明注解的生命周期。
a、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃。
b、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃。默认的生命周期。
c、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,在jvm加载class文件之后,仍然存在。