注解(Annotation)
注解的概述
- jdk5之后增加了对元数据(metaData)的支持,也就是注解(Annotation).
- Annotation其实就是代码里面的特殊标记,这些标记在编译,类加载,运行的时候被读取,并执行相应的处理。通过Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具同意通过补充信息进行验证或者进行部署。
- Annotation可以被当做修饰符使用,可以用于修饰包、类、属性、方法、构造器、参数、局部变量 ,这些信息被保存在Annotation的键值对中。
- 框架= 注解+反射+设计模式
示例
- 文档注释的注解
- @author 编写人
- @date 时间
- @return 返回值
- @exception 异常说明
- @param 参数说明
- @version 版本
- 在编译的时候进行检查
- @Override 用于方法,重写
- @Deprecated 标记类或者方法已经过时
- @SuppressWarnings 抑制编辑器警告
自定义注解
- 文档注释的注解
定义新的Annotation类型使用@interface关键字
- 自动继承java.lang.annotation.Annotation接口
- 成员变量以无参数方法的形式来定义
自定义注解必须配上对象的信息处理流程才有意义
jdk提供的4种元注解
retention :指定所修饰的Annotation的生命周期,SOURCE/CLASS(默认)/RUNTIME
- Target : 用于指定被修饰的注解能够修饰那些元素
- Documented : 会被javadoc保留下来
- Inherited: 被它修饰的注解具有继承性
通过反射获取注解信息
详见《反射》
jdk8中的注解新特性
- 可重复注解
- 再myAnnotation上声明@Repeatable,成员值为myAnnotations.class
- myAnnotation的Target和Retention和s相同
- 类型注解
- ElementType.TYPE_PARAMETER : 类型变量声明
- ElementType.TYPE_USE : 类型使用