1、元注解
元注解:除了直接使用JDK 定义好的注解,我们还可以自定义注解,在JDK 1.5中提供了4个标准的用来对注解类型进行注解的注解类,我们称之为 meta-annotation(元注解),他们分别是:
@Target
@Retention
@Documented
@Inherited
2、@Target
@Target:用来定义你定义的注解使用范围
它提供的枚举主要有:
public enum ElementType {
/** 类、接口(包括注解类型)或枚举声明 */
TYPE,
/** 字段声明(包括枚举常量) */
FIELD,
/** 方法声明 */
METHOD,
/** 形参声明 */
PARAMETER,
/** 构造函数声明 */
CONSTRUCTOR,
/** 局部变量声明 */
LOCAL_VARIABLE,
/** 注解类型声明 */
ANNOTATION_TYPE,
/** 包装声明 */
PACKAGE,
/**
* 类型参数声明
*
* 自从:1.8
*/
TYPE_PARAMETER,
/**
* 模块声明
*
* 自从:1.8
*/
TYPE_USE,
/**
* 模块声明
*
* 自从:9
*/
MODULE
}
3、@Retention
@Retention:描述注解保留的时间范围
public enum RetentionPolicy {
/**
* 注解将被编译器丢弃
*/
SOURCE,
/**
* 注解在class文件中可用,但会被VM丢弃 ,这是默认行为。
*/
CLASS,
/**
*注解会被编译器记录在类文件中,并在运行时由 VM 保留,因此它们可以被反射读取。
*也可以看看:
*
*reflect.AnnotatedElement
*/
RUNTIME
}
4、 @Documented
@Documented:描述在使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息。
5、@Inherited
@Inherited:使被它修饰的注解具有继承性(如果某个类使用了被@Inherited修饰的注解,则其子类将自动具有该注解)。
详细使用可参考:Java的自定义注解及通过反射获取注解