1.定义
注解(Annotation),一种代码级别的说明。它是JDK5.0及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
注解是以"@注解名"在代码中存在的。
2.作用
①编写文档:通过代码里标识的元数据生成文档。
② 代码分析:通过代码里标识的元数据对代码进行分析。
③编译检查:通过代码里标识的元数据让编译器能过实现基本的编译检查。
3.内置注解
内置注解有三种:@Override,@Deprecated,@SuppressWarnings。
3.1@Override
只能用在方法之上的,用来告诉别人这一个方法是重写父类的。
3.2@Deprecated
建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上。
3.3@SuppressWarnings
暂时把一些警告信息消息关闭。
其参数有:
deprecation,使用了过时的类或方法时的警告。
unchecked,执行了未检查的转换时的警告。
fallthrough,当 Switch 程序块直接通往下一种情况而没有 Break 时的警告。
path,在类路径、源文件路径等中有不存在的路径时的警告。
serial,当在可序列化的类上缺少serialVersionUID 定义时的警告。
finally,任何 finally 子句不能正常完成时的警告。
all,以上所有情况的警告。
4.自定义注解
内置注解远远满足不了我们的需要,这时我们就要自定义注解了。
@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型。可以通过default来声明参数的默认值。其定义类似于接口的定义。
@interface Person{
String name() default "lavor_zl";
int age();
}
5.元注解
就是定义注解的注解,也就是说这些元注解是的作用就是专门用来约束其它注解的注解。
四种元注解:@Target,@Retention,@Documented,@Inherited。
5.1@Retention
@Retention元注解,表示需要在什么级别保存该注释信息(生命周期)。
可选的RetentionPoicy参数包括:
①RetentionPolicy.SOURCE::停留在java源文件,编译器被丢掉。
②RetentionPolicy.CLASS:停留在class文件中,但会被JVM丢弃(默认)。
③RetentionPolicy.RUNTIME:内存中的字节码,JVM将在运行时也保留注解,因此可以通过反射机制读取注解的信息。
5.2@Target
@Target元注解,默认值为任何元素,表示该注解用于什么地方。
可用的ElementType参数包括
①ElementType.CONSTRUCTOR::构造器声明。
②ElementType.FIELD:成员变量、对象、属性(包括enum实例)。
③ElementType.LOCAL_VARIABLE:局部变量声明。
④ElementType.METHOD:方法声明。
⑤ElementType.PACKAGE:包声明。
⑥ElementType.PARAMETER::参数声明。
⑦ElementType.TYPE:类、接口(包括注解类型)或enum声明。
5.3@Documented
@Documented元注解,将注解包含在JavaDoc中。
5.4@Inheried
@Inheried元注解,允许子类继承父类中的注解。