注解

来源:互联网 发布:工艺流程方框图 软件 编辑:程序博客网 时间:2024/04/30 11:06

java 注解

定义:

又称为元数据,是一种代码级别的声明。

  • 编写文档: 通过元数据生成 doc
    利用它生成API文档
  • 代码分析: 通过元数据对代码进行分析
    在一些框架中我们通过解释注解来生成代码,参数,甚至生成文件
  • 编译检查: 使得编译器做基本的编译检查

内置系统注解


  1. @Override (标记注解)

级别: METHOD
指定该方法是覆写 父类 的方法

  • @Deprecated (标记注解)

    级别: METHOD
    指定该方法是过时的,不提倡使用

  • @SuppressWarnings
    作用范围– 不定
    抑制编译器编译时警告信息
    常用的有
    deprecation,使用了过时的类或方法时的警告
    unchecked,执行了未检查的转换时的警告
    fallthrough,当 Switch 程序块直接通往下一种情况而没有 Break 时的警告
    path,在类路径、源文件路径等中有不存在的路径时的警告
    serial,当在可序列化的类上缺少serialVersionUID 定义时的警告
    finally ,任何 finally 子句不能正常完成时的警告
    all,关于以上所有情况的警告
  • 元注解:

    作用范围:ANNOTATION ,注解的注解

    @Target

    作用:用于描述注解的使用范围
    1.PACKAGE:用于描述包
    2.TYPE:用于描述类、接口(包括注解类型) 或enum声明
    3.CONSTRUCTOR:用于描述构造器
    4.FIELD:用于描述域
    5.METHOD:用于描述方法
    6.PARAMETER:用于描述参数
    7.LOCAL_VARIABLE:用于描述局部变量
    8.ANNOTATION_TYPE 应用于其他注解的元注解 

    @Retention

    可以设置为RetentionPolicy类型的值

    RetentionPolicy.CLASS

    annotation信息将被编译器编译时保存在class文件中,但执行时不会在VM装载。

    RetentionPolicy.RUNTIME

    annotation信息将被编译器编译时保存在class文件中,执行时也会被VM装载

    RetentionPolicy.SOURCE

    annotation信息将被编译器编译时舍弃掉。

    @Documented

    用于描述其它类型的annotation应该被作为被标注的程序成员的公共API

    @Inherited

    @Inherited阐述了某个被标注的类型是被继承的

    自定义注解

    @interface 声明
    根据注解内部属性多少可以分为

        标记注解     单值注解     多值注解

    1 无参注解(标记注解)

        @Target(ElementType.TYPE)    @Retention(RetentionPolicy.RUNTIME)    public @interface LayoutViewInject {    }

    2 单参注解(单值注解)

    参数最好定义为 value

        @Target(ElementType.TYPE)    @Retention(RetentionPolicy.RUNTIME)    public @interface LayoutViewInject {        int value();        // int[] value();    }

    3 多参注解(多值注解)

        @Target(ElementType.TYPE)    @Retention(RetentionPolicy.RUNTIME)    public @interface LayoutViewInject {        int value();        int value1();    }

    要想使用注解在运行期间对代码进行分析

         RetentionPolicy.RUNTIME 

    注解框架

    Xutils afinal

    butterknife AndroidAnnotation

      1 继承  AbstractProcessor  2 重写  process 方法  3 启用  自定义的 apt        apt "org.androidannotations:androidannotations:$AAVersion"
    0 0