Annontation
是Java5开始引入的新特征。中文名称一般叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。
annotation一般作为一种辅助途径,应用在软件框架或工具中,在这些工具类中根据不同的 annontation注解信息采取不同的处理过程或改变相应程序元素(类、方法及成员变量等)的行为。
例如:Junit、Struts、Spring等流行工具框架中均广泛使用了annontion。使代码的灵活性大提高。
从java5版本开始,自带了三种标准annontation类型,
(1)、Override
java.lang.Override 是一个marker annotation类型,它被用作标注方法。它说明了被标注的方法重载了父类的方法,起到了断言的作用。如果我们使用了这种annotation在一个没有覆盖父类方法的方法时,java编译器将以一个编译错误来警示。
这个annotaton常常在我们试图覆盖父类方法而确又写错了方法名时加一个保障性的校验过程。
(2)、Deprecated
Deprecated也是一种marker annotation。当一个类型或者类型成员使用@Deprecated修饰的话,编译器将不鼓励使用这个被标注的程序元素。所以使用这种修饰具有一定的 “延续性”:如果我们在代码中通过继承或者覆盖的方式使用了这个过时的类型或者成员,虽然继承或者覆盖后的类型或者成员并不是被声明为@Deprecated,但编译器仍然要报警。
注意:@Deprecated这个annotation类型和javadoc中的 @deprecated这个tag是有区别的:前者是java编译器识别的,而后者是被javadoc工具所识别用来生成文档(包含程序成员为什么已经过时、它应当如何被禁止或者替代的描述)。
(3)、SuppressWarnings
此注解能告诉Java编译器关闭对类、方法及成员变量的警告。
有时编译时会提出一些警告,对于这些警告有的隐藏着Bug,有的是无法避免的,对于某些不想看到的警告信息,可以通过这个注解来屏蔽。
SuppressWarning不是一个marker annotation。它有一个类型为String[]的成员,这个成员的值为被禁止的警告名。对于javac编译器来讲,被-Xlint选项有效的警告名也同样对@SuppressWarings有效,同时编译器忽略掉无法识别的警告名。
是接口的一种功能扩展
是一种有功能效果的注释
可以为类、方法等生成特定的java doc
可以在运行时标注类、方法等,用反射的方式达到特殊的流程控制等目的
在编译的时候,可以用注解处理器,对其中的源代码进行处理
Java的几种注解:
元注解:
1.Target-----标明属性的修饰目标,共有
Type-----类,接口,或者枚举
Field----- field属性,也包括enum常量使用的注解
Method-----方法
Parame-----参数
Construtor----构造函数
Local—variable-------局部变量
Annotation_type------注解上使用的元注释
Package----包
2.Rentention
Enum类型的RententionPolicy
默认是编译成class文件的时候注解被抛弃
Source-------------注解被保存到class文件中,在jvm加载class文件的时候被遗弃
Class--------------注解不仅被保存到class文件中,jvm加载class文件后,仍然存在
3.Document-----可以将其他注解作为被标注程序的公共API
4.Inherited------父类的注解可以被子类继承