注解(Annotation)

注解的概述

  1. jdk5之后增加了对元数据(metaData)的支持,也就是注解(Annotation).
  2. Annotation其实就是代码里面的特殊标记,这些标记在编译,类加载,运行的时候被读取,并执行相应的处理。通过Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具同意通过补充信息进行验证或者进行部署。
  3. Annotation可以被当做修饰符使用,可以用于修饰包、类、属性、方法、构造器、参数、局部变量 ,这些信息被保存在Annotation的键值对中。
  4. 框架= 注解+反射+设计模式
  5. 示例

    1. 文档注释的注解
      1. @author 编写人
      2. @date 时间
      3. @return 返回值
      4. @exception 异常说明
      5. @param 参数说明
      6. @version 版本
    2. 在编译的时候进行检查
      1. @Override 用于方法,重写
      2. @Deprecated 标记类或者方法已经过时
      3. @SuppressWarnings 抑制编辑器警告

        自定义注解

  6. 定义新的Annotation类型使用@interface关键字

  7. 自动继承java.lang.annotation.Annotation接口
  8. 成员变量以无参数方法的形式来定义
  9. 自定义注解必须配上对象的信息处理流程才有意义

    jdk提供的4种元注解

  10. retention :指定所修饰的Annotation的生命周期,SOURCE/CLASS(默认)/RUNTIME

  11. Target : 用于指定被修饰的注解能够修饰那些元素
  12. Documented : 会被javadoc保留下来
  13. Inherited: 被它修饰的注解具有继承性

    通过反射获取注解信息

详见《反射》

jdk8中的注解新特性

  1. 可重复注解
    1. 再myAnnotation上声明@Repeatable,成员值为myAnnotations.class
    2. myAnnotation的Target和Retention和s相同
  2. 类型注解
    1. ElementType.TYPE_PARAMETER : 类型变量声明
    2. ElementType.TYPE_USE : 类型使用