注解
注解的理解
1、注解(Annotation)也被称为元数据(Metadata),用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息
2、和注释一样,注解不影响程序的逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息
3、在javase中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等等。在javaEE中注解占据了重要角色,例如用来配置应用程序的任何切面,代替javaEE旧版中所遗留的繁冗代码和XML配置等。
基本的Annotation介绍
使用Annotation时需要在其前面增加@符号,并把该Annotation 当成一个修饰符使用。
三个基本的Annotation:
1、@Override:限定某个方法,是重写父类方法,该注解只能用于方法;
如果给某个方法写了@Override注解,则编译器会检查此方法是否重写了父类的该方法,如果发现父类的没有该方法,不构成重写,则编译不通过。即语法的校验。
2、@Deprecated:用于表示某个程序元素(类,方法等),已过时;
@Deprecated修饰某个元素,表示该元素已经过时 。可以用于版本升级时的过度使用。
3、@SuppressWarnings:抑制编译器警告,通常放在类和方法中,作用域为修饰的类和方法的范围。可取消全部的警告,也可添加部分警告
常用的警告:
其他的参数可查看文章:
其他注解介绍
- @interface:不是接口,而是定义一个注解类,在jdk5之后加入的。
- @Target: 是修饰注解的注解,即元注解
四种元注解
介绍:元注解是修饰注解的注解
作用:本身作用不大,但我们要知道这些元注解是干什么的,方便我们阅读源码。
@Retention:保留指定注解的作用范围
说明:只能用于修饰一个Annotation定义,用于指定该Annotation可以保留多长时间,@Retation包含一个RetentionPolicy类型的成员变量,使用@Rentention时必须为该value 成员变量指定值:
-
RententionPolicy.SOURCE:编译器使用后,直接丢弃这种策略的注释
-
RententionPolicy.CLASS: 编译器将把注解记录在class文件中,当运行Java程序时,JVM不会保留注解。这是默认值。
-
RententionPolicy.RUNTIME: 编译器将把注解记录在class文件中,当运行java程序时,JVM会保留注解,程序可以通过反射获取该注解。
@Target
用于修饰Annotation定义,用于指定被修饰的Annotation能用于修饰哪些程序元素。@Target也包含一个名为 value的成员变量
-
CONSTRUCTOR: 构造器
-
TYPE: 类
-
METHOD: 方法
-
PACKAGE: 包
-
FIELD:字段/属性
-
LOCAL_VARIABLE: 局部变量
-
PARAMETER: 参数
@Documented
用于指定被该元Annotation修饰的Annotation类将被javadoc工具提取成文档,即在生成文档时,可以看到被@Documented修饰的注解
说明:定义为Documented的注解必须设置Retention的值为RUNTIME。
@Inherited(继承)
被此注解修饰的 Annotation 将具有继承性,如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解。
说明:实际应用中,使用较少,了解即可。