@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()









网友评论