注解
元注解
元注解是注解的注解,JAVA中提供了四种元注解
@Target: 它是用来标识注解的使用范围,可选的范围包括包、类型、方法、构造方法、成员变量、局部变量以及方法变量等
@Retention: 它是用来标识注解的生命周期,可选的生命周期由RetentionPolicy定义,可选的值包括源代码、CLASS文件以及运行时
@Docuemnted: 它是一个标记注解,用来标识该注解会出现在javadoc中; 如果没有使用这个注解,那么相应的注解就不会出现在javadoc
@Inherited: 它也是个标记注解, 用于标识注解是否会被子类继承. 如果某个类被带有@Inherited注解的注解标记时,则该注解会被子类继承
值得注意的是,@Inherited只会被子类继承,但不会从接口、重载方法等地方继承注解
自定义注解
使用@interface定义注解时,自动继承了annotation接口
定义注解的语法: public @interface 注解名称{}
关于注解的定义有以下几点需要关注:
注解的每个方法声明一个配置参数, 方法的名称就是配置参数的名称, 方法的返回值就是配置参数的类型
可以通过default来声明参数的默认值
注解支持的参数类型为: 基本数据类型、Class、Enum、Annotation
注解元素必须有值,要么在定义注解时设置默认值,要么在使用注解时设置相应值,不能为空或者NULL. 因此在定义注解时,一般会给每个配置参数设置相应的默认值, 通常情况下,负数或者空字符串代表这个参数不存在
注解处理器
一般是在工具框架中、或者反射的方式进行处理
注解的作用
- 编译检查: 如@Override
- 反射
- 生成帮助文档