注解

注解

元注解

元注解是注解的注解,JAVA中提供了四种元注解

  • @Target: 它是用来标识注解的使用范围,可选的范围包括包、类型、方法、构造方法、成员变量、局部变量以及方法变量等

  • @Retention: 它是用来标识注解的生命周期,可选的生命周期由RetentionPolicy定义,可选的值包括源代码、CLASS文件以及运行时

  • @Docuemnted: 它是一个标记注解,用来标识该注解会出现在javadoc中; 如果没有使用这个注解,那么相应的注解就不会出现在javadoc

  • @Inherited: 它也是个标记注解, 用于标识注解是否会被子类继承. 如果某个类被带有@Inherited注解的注解标记时,则该注解会被子类继承

值得注意的是,@Inherited只会被子类继承,但不会从接口、重载方法等地方继承注解

自定义注解

使用@interface定义注解时,自动继承了annotation接口

定义注解的语法: public @interface 注解名称{}

关于注解的定义有以下几点需要关注:

  • 注解的每个方法声明一个配置参数, 方法的名称就是配置参数的名称, 方法的返回值就是配置参数的类型

  • 可以通过default来声明参数的默认值

  • 注解支持的参数类型为: 基本数据类型、Class、Enum、Annotation

  • 注解元素必须有值,要么在定义注解时设置默认值,要么在使用注解时设置相应值,不能为空或者NULL. 因此在定义注解时,一般会给每个配置参数设置相应的默认值, 通常情况下,负数或者空字符串代表这个参数不存在

注解处理器

一般是在工具框架中、或者反射的方式进行处理

注解的作用

  • 编译检查: 如@Override
  • 反射
  • 生成帮助文档

相关的类图

annotation-hierarchy

参考文献

  1. http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html

  2. http://www.cnblogs.com/skywang12345/p/3344137.html

您的支持将鼓励我继续创作!