Java之注解.doc
文本预览下载声明
1.什么是注解
注解Annotation又叫元数据,是JDK5中引入的一种以通用格式为程序提供配置信息的方式。注解使得Java源代码中不但可以包含功能性的实现代码,还可以添加元数据。使用注解Annotation可以使元数据写在程序源码中,使得代码看起来简洁,同时编译器也提供了对注解Annotation的类型检查,使得在编译期间就可以排除语法错误。
注解的功能类似于代码中的注释,所不同的是注解不是提供代码功能的说明,而是实现程序功能的重要组成部分。Java注解已经在很多框架中得到了广泛的使用,用来简化程序中的配置。
从某种角度来说,可以把注解看成是一个XML元素,该元素可以有不同的预定义的属性。而属性的值是可以在声明该元素的时候自行指定的。在代码中使用注解,就相当于把一部分元数据从XML文件移到了代码本身之中,在一个地方管理和维护。
2.常见的使用注解的场景
生成文档。这是最常见的,也是java 最早提供的注解。常用的有@see @param @return 等
在编译时进行格式检查。如@override 放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出。
跟踪代码依赖性,实现替代配置文件功能。比较常见的是spring 2.5 开始的基于注解配置。作用就是减少配置。现在的框架基本都使用了这种配置来减少配置文件的数量。一些常用的开源框架,大都采用注解形式的配置方式。
3.基本注解
在JDK5中,内置了3个通用目的的注解Annotation,这三个内置的注解在java.lang包下:
@Override:
这个注解常用在继承类或实现接口的子类方法上,表面该方法是子类覆盖父类的方法,该方法的方法签名要遵循覆盖方法的原则:即访问控制权限必能比父类更严格,不能比父类抛出更多的异常。
@Deprecated:
这个注解告诉编译器该元素是过时的,即在目前的JDK版本中已经有新的元素代替该元素。@Deprecated的作用是对不应该在使用的方法添加注释,当编程人员使用这些方法时,将会在编译时显示提示信息,它与javadoc里的@deprecated标记有相同的功能,准确的说,它还不如javadoc @deprecated,因为它不支持参数,
@SuppressWarnings:
该注解关闭编译器中不合适的警告,即强行压制编译器的警告提示,SuppressWarnings包含的参数有:
deprecation:使用了过时的类或方法时的警告
unchecked:执行了未检查的转换时的警告
fall through:当 Switch 程序块直接通往下一种情况而没有 Break 时的警告
path:在类路径、源文件路径等中有不存在的路径时的警告
serial:当在可序列化的类上缺少 serialVersionUID 定义时的警告
finally:任何 finally 子句不能正常完成时的警告
all:关于以上所有情况的警告
4.自定义注解
4.1 注解的定义
没有任何元素的空注解Annotation叫做标记Annotation.
在声明注解的时候往往需要使用@Target,@Retention等注解,这种注解被称为注解的注解(元数据注解),即是专门用于处理注解Annotation本身的。
@Target注解:
用于指示注解所应用的目标程序元素种类,该注解常和ElementType枚举类型一起联合使用,ElementType枚举提供了java程序中声明的元素类型如下:
ANNOTATION_TYPE:注释类型声明。
CONSTRUCTOR:构造方法声明。
FIELD:字段声明(包括枚举常量)。
LOCAL_VARIABLE:局部变量声明。
METHOD:方法声明。
PACKAGE:包声明。
PARAMETER:参数声明。
TYPE::类,接口或枚举声明。
@Retention注解:
该注解用于指示所定义的注解类型的注释在程序声明周期中得保留范围,该注解常和RetentionPolicy枚举联合使用。RetentionPolicy枚举常量定义了注解在代码中的保留策略:
CLASS:编译器把注解记录在类文件中,但在运行时JVM不需要保留注解。
RUNTIME:编译器把注解记录在类文件中,在运行时JVM将保留注解,因此可以通过反射机制读取注解。
SOURCE:仅保留在源码中,编译器在编译时就要丢弃掉该注解。
Annotation注解中的元素只能是下面的数据类型:
java的8中基本类型,如int, boolean等等,如果可以自动装箱和拆箱,则可以使用对应的对象包装类型。
String类型。
.Class类型。
Enums类型。
Annotation类型。
以上类型的数组。
除了上面这些类型以外,如果在注解中定义其他
显示全部