1. 什么是注解
注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行标记,例如我们常见的@Override和@Deprecated,
一般常用的注解可以分为三类:
-
一类是Java自带的标准注解,包括@Override(标明重写某个方法)、@Deprecated(标明某个类或方法过时)和@SuppressWarnings(标明要忽略的警告),使用这些注解后编译器就会进行检查。
-
一类为元注解,元注解是用于定义注解的注解,包括@Retention(标明注解被保留的阶段)、@Target(标明注解使用的范围)、@Inherited(标明注解可继承)、@Documented(标明是否生成javadoc文档)
-
一类为自定义注解,可以根据自己的需求定义注解
2. 注解的作用
-
生成文档,通过代码里标识的元数据生成javadoc文档。
-
编译检查,通过代码里标识的元数据让编译器在编译期间进行检查验证。
-
编译时动态处理,编译时通过代码里标识的元数据动态处理,例如动态生成代码。
-
运行时动态处理,运行时通过代码里标识的元数据动态处理,例如使用反射注入实例
注解就是一个修饰符一个标记。通过注解能做的事情确是无穷。在代码编译或者运行的过程中我们可以找到这些 注解,在找到这些注解之后咱们就可以做很多事情了,比如自动做一些代码处理(赋值、检测、调用等等)或者干脆生成一些额外的java文件等。
3. android自定义注解
元注解:
元注解是用来定义其他注解的注解(在自定义注解的时候,需要使用到元注解来定义我们的注解)。java.lang.annotation提供了四种元注解:@Retention、 @Target、@Inherited、@Documented。
元注解 | 说明 |
---|---|
@Target | 表明我们注解可以出现的地方。是一个ElementType枚举 |
@Retention | 这个注解的的存活时间 |
@Document | 表明注解可以被javadoc此类的工具文档化 |
@Inherited | 是否允许子类继承该注解,默认为false |
@Target ElementType类型 | 说明 |
---|---|
ElementType.TYPE | 接口、类、枚举、注解 |
ElementType.FIELD | 字段 |
ElementType.METHOD | 方法 |
ElementType.PARAMETER</ |