1、四大元注解
1.1、@Target:元素种类,指示注解类型所适用的程序元素的种类。由 ElementType 限定。
-
- ElementType.TYPE:注解到接口、类、枚举、注解上
- ElementType.FIELD:注解到属性字段、枚举的常量上
- ElementType.METHOD:注解到方法上
- ElementType.PARAMETER:注解到方法参数上
- ElementType.CONSTRUCTOR:注解到构造方法上
- ElementType.LOCAL_VARIABLE:注解到局部变量上
- ElementType.ANNOTATION_TYPE:注解到注解类型元素的声明上(表明为原注解)
- ElementType.PACKAGE:注解到包上
- ElementType.TYPE_PARAMETER:注解到@since 1.8上
- ElementType.TYPE_USE:注解到@since 1.8上
1.2、@Retention:保留策略【重要】
指示注解类型的注解要保留多久。如果注解类型声明中不存在 Retention 注解,则保留策略默认为 RetentionPolicy.CLASS。
-
- RetentionPolicy.SOURCE:注解保留在源代码中,但是编译的时候会被编译器所丢弃。
- RetentionPolicy.CLASS:默认,注解会被保留在class文件中,但是在运行时期间就不会识别这个注解。
- RetentionPolicy.RUNTIME:注解会被保留在class文件中,同时运行时期间也会被识别。所以可以使用反射机制获取注解信息。
1.3、@Documented:文档化
指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。
一个类型的声明是用 @Documented 来注解的,则其注解将成为注解元素的公共 API 的一部分。
1.4、@Inherited:自动继承
说明子类可以继承父类中的该注解。