注解是java5引入的特性。
Mete Annotation
4个元注解,对Annotation类型作说明。
@Target
用于描述Annotation的范围,即被描述的注解可以用在什么地方。
@Target
值【ElementType】
- TYPE : 类,接口(包括注释类型)或枚举声明
- FIELD : 字段声明(包括枚举常量)
- METHOD : 方法声明
- PARAMETER : 形式参数声明
- CONSTRUCTOR : 声明构造函数
- LOCAL_VARIABLE : 声明局部变量
- ANNOTATION_TYPE : 注释类型声明
- PACKAGE : 包声明
- TYPE_PARAMETER : 类型参数声明
- TYPE_USE : 使用类型
@Retention
定义了Annotation的生命周期。
作用: 表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)
@Retention
值【RetentionPolicy】
- SOURCE : 只存在源码中,编译时注释将被编译器丢弃。
- CLASS : 在Class文件中有效。
- RUNTIME : 在运行时有效。
Documented
用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。
就是说所标注内容可以出现在javadoc中。
@Inherited
继承特性
- 指示注释类型被自动继承。
- 如果在注释类型声明中存在 Inherited 元注释,并且用户在某一类声明中查询该注释类型,同时该类声明中没有此类型的注释,则将在该类的超类中自动查询该注释类型。
- 此过程会重复进行,直到找到此类型的注释或到达了该类层次结构的顶层 (Object) 为止。如果没有超类具有该类型的注释,则查询将指示当前类没有这样的注释。
- 如果使用注释类型注释类以外的任何事物,此元注释类型都是无效的。
- 还要注意,此元注释仅促成从超类继承注释;对已实现接口的注释无效。
@Repeatable
顾名思义说明被这个元注解修饰的注解可以同时作用一个对象多次,但是每次作用注解又可以代表不同的含义。