1)注解(Annotation)也被称为元数据(Metadata),用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息。
2)和注释一样,注解不影响程序逻辑,但注解可以被编逢或运行,相当于嵌入在代码中的补充信息。
3)在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。
在JavaEE中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替java EE 旧版中所遗留的繁冗代码和XML配置等。
使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用。用于修饰它支持的程序元素
三个基本的Annotation:
限定某个方法,是重写父类方法,该注解只能用于方法. crtl点进去之后还可以看到@interface
, @interface
不是interface
, 是注解类, 是jdk1.5之后加入的
➢Override使用说明
@Override表示指定重写父类的方法(从编译层面验证) ,如果父类没有fly方法,则会报错
如果不写@Override注解,而父类仍有public void fly({} ,仍然构成重写
@Override只能修饰方法,不能修饰其它类,包,属性等等
查看@Override注解源码为@Target(ElementType.METHOD)
,说明只能修饰方法
@Target是修饰注解的注解,称为元注解
用于表示某个程序元素(类,方法等)已过时, 可以修饰方法,类,字段,包,参数等等, @Deprecated的作用可以做到新旧版本的兼容和过渡.
抑制编译器警告
➢说明各种值
JDK的元Annotation用于修饰其他Annotation元注解:
本身作用不大,讲这个原因希望同学们,看源码时,可以知道他是干什么,
元注解的种类(使用不多,了解,不用深入研究)
➢说明
只能用于修饰一个Annotation定义,用于指定该Annotation可以保留多长时间,
@Rentention包含一个RetentionPolicy类型的成员变量,使用@Rentention时必须为该value成员变量指定值:
➢@Retention的三种值
RetentionPolicy.SOURCE
编译器使用后,直接丢弃这种策略的注解RetentionPolicy.CLASS
:编译器将把注释记录在class文件中.当运行Java程序时,JVM不会保留注解。这是默认值RetentionPolicy.RUNTIME
:编译器将把注释记录在class文件中.当运行Java程序时,JVM会保留注解.程序可以通过反射获取该注解➢基本说明
用于修饰Annotation定义,用于指定被修饰的Annotation能用于修饰哪些程序元素. @Target
也包含一个名为value的成员变量。
➢基本说明
@Documented:用于指定被该元Annotation修饰的Annotation类将被javadoc工具提取成文档,即在生成文档时,可以看到该注释。
说明:定义为Documented的注解必须设置Retention值为RUNTIME。
被它修饰的Annotation将具有继承性如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解
说明:实际应用中,使用较少,了解即可。
元注解本身作用不大,讲这个原因希望同学们,看源码时,可以知道他是干什么的