一、@Documented
作用是在生成javadoc文档的时候将该注解也写入到文档中,默认javadoc是不包括注解。
===========================
二、@Target
指定注解的使用范围,有十个值:
可以指定多个,列如@Target({ElementType.TYPE,ElementType.FIELD})
TYPE, //用于描述类、接口(包括注解类型) 或enum声明
FIELD, //用于描述属性
METHOD, //用于描述方法
PARAMETER, //用于描述参数
CONSTRUCTOR, //用于描述构造函数
LOCAL_VARIABLE, //用于描述局部变量
ANNOTATION_TYPE, //用于描述注解
PACKAGE, //用于包
TYPE_PARAMETER, //描述类型,如泛型,String类型
TYPE_USE; //描述这个注解可以用在类型的声明式前
===========================
三、@Retention
表明被保留到那个阶段. 有三个值:
1.RetentionPolicy.SOURCE
//注解仅存在于源码中,在class字节码文件中不包含
2.RetentionPolicy.CLASS
//注解会在源码和class字节码文件中存在,不存在与JVM虚拟机中,运行时无法获得,
3.RetentionPolicy.RUNTIME
// 注解会在源码,class字节码文件和JVM虚拟机中存在,在运行时可以通过反射获取到
===========================
四、@Inherited
父类用了该注解,子类默认拥有了该注解,意思是父类的注解子类可以通过反射获取到