@Target
:表示注解可以用在什么地方,由ElementType枚举定义
参数 | 含义 |
---|---|
CONSTRUCTOR | 构造器 |
field | 域声明(包括enum实例) |
local_variable | 局部变量声明 |
method | 方法参数 |
package | 包声明 |
parameter | 参数声明 |
type | 类,接口或enum |
annotation_type | 应用于另一个注解 |
type_parameter | 类型参数声明(1.8新加入) |
type_use | 类型使用声明(1.8加入) |
@Retention
表示需要在什么级别保存该注解信息
参数 | 含义 |
---|---|
source | 注解将被编译器丢弃(只会保留在源码里) |
class | 注解在class文件中可用,但是会被vm丢弃 |
runtime | vm将在运行期间也保存注解,可用通过反射获取注解的信息 |
apt在编译时自动查找所有继承自
AbstractProcessor
的类,然后调用他们的process
方法去处理
@Documented
表示注解会被包含在javaapi文档里
@Inherited
允许子类继承父类注解
注解元素
注解可用的类型有:
1.所有的基本类型(int,float,boolean,byte,double,char,long,short)
2.string
3.Class
4.enum
5.Annotation
元素的修饰符只能是public或者default
获取注解
1.类注解使用getAnnotation方法
2.方法注解Method.getAnnotation()
3.参数注解Method.getParameterAnnotations();返回二维数组
4.变量注解Field.getAnnotation()