1.8 注解

99 阅读1分钟

所有的注解都继承自于Annotation

1. 注解的类型

  1. 一类是Java自带的标准注解,包括@Override(标明重写某个方法)、@Deprecated(标明某个类或方法过时)和@SuppressWarnings(标明要忽略的警告),使用这些注解后编译器就会进行检查。

  2. 一类为元注解,元注解是用于定义注解的注解,包括@Retention(标明注解被保留的阶段)、@Target(标明注解使用的范围)、@Inherited(标明注解可继承)、@Documented(标明是否生成javadoc文档)

  3. 一类为自定义注解,可以根据自己的需求定义注解

2 作用时间

一种是编译器直接扫描,一种是运行期间反射

  1. @Target:注解的作用目标
  2. @Retrntion:注解的生命周期
  3. @Documented:注解是否应该被包含在Javadoc中
  4. @Iherited:是否允许子类继承该注解

@Retention:注解的保留位置         

      @Retention(RetentionPolicy.SOURCE) 注解仅存在于源码中,在class字节码文件中不包含

      @Retention(RetentionPolicy.CLASS) 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,

      @Retention(RetentionPolicy.RUNTIME) 注解会在class字节码文件中存在,在运行时可以通过反射获取到

  

 @Target:注解的作用目标

        @Target(ElementType.TYPE) //接口、类、枚举

        @Target(ElementType.FIELD) //字段、枚举的常量

        @Target(ElementType.METHOD) //方法

        @Target(ElementType.PARAMETER) //方法参数

        @Target(ElementType.CONSTRUCTOR) //构造函数

        @Target(ElementType.LOCAL_VARIABLE)//局部变量

        @Target(ElementType.ANNOTATION_TYPE)//注解

        @Target(ElementType.PACKAGE) ///包

@Document:说明该注解将被包含在javadoc中

运行时候通过反射进行调用