1.Annotation的概念
注解是一种能够添加到Java源代码的元数据.java
类,方法,变量,参数,包均可以被注解.框架
注解对注解的代码并无直接的影响.ide
注解仅仅是个标记.注解之因此起做用是对其解析后作了相应的处理spa
2.Annotation分类
标准Annotation继承
标准Annotation是指Java内置的三个Annnotaion:接口
@Override:用于修饰此方法覆盖了父类的方法.get
@Deprecated:用于修饰已通过时的方法.编译器
@SuppressWarnnings:用于通知java编译器禁止特定的编译警告.it
元Annotation(注解的注解)io
元Annotation是用来定义Annotation的Annotation
元Annotation能够定义Annotation的做用范围,使用在什么元素上等
元注解共有四种@Retention, @Target, @Inherited, @Documented
自定义Annotation
3.Annotation做用
格式检查:告诉编译器信息,好比被@Override标记的方法若是不是父类的某个方法,IDE会报错;
减小配置:运行时动态处理,获得注解信息,实现代替配置文件的功能;
减小重复工做:好比第三方框架xUtils,经过注解@ViewInject减小对findViewById的调用,相似的还有(JUnit、ActiveAndroid等);
4.元注解
上文提到的四个注解:@Documented、@Retention、@Target、@Inherited就是元注解,它们的做用是负责注解其它注解,主要是描述注解的一些属性,任何注解都离不开元注解(包括元注解自身,经过元注解能够自定义注解),元注解的用户是JDK,JDK已经帮助咱们实现了这四个注解的逻辑。这四个注解在JDK的java.lang.annotation包中。
5.自定义注解
使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其余细节。在定义注解时,不能继承其余的注解或接口。@interface用来声明一个注解,其中的每个方法其实是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。能够经过default来声明参数的默认值。