Java基础-第三节-注解
•JDK5及其以后JDK版本开始支持Java注解;
•Java注解(Annotation)也叫作元数据,以‘@注解名’在代码中存在,它是一种在源代码中标注的特殊标记,可以标注源代码中的类、属性、方法、参数等代码,主要用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。
•Java注解按照是否含有参数分为三种:
Ø不带参数,语法结构为:@Annotation
Ø带一个参数的注解,语法结构为:@Annotation(参数)
Ø带多个参数的注解,语法结构为:@Annotiation(参数1, 参数2, 参数3...)
内置注解
•@Override被用于标注方法,用于说明所标注的方法是重写父类的方法:
•为了支持@Override,需要将项目工程升级为1.6或其以上版本;如果升级后Java代码没问题,但是工程报错,可以通过如下操作解决:右键项目“Properties”——>“Project Facets”——>右边java项选择相应的版本就OK了。
•@SuppressWarnings用于取消编译器所显示的警告,该注解常用属性值如下:
Ødeprecation:使用已被@Deprecated标注的程序元素;
Øunused:程序含有未被使用的元素;
Øserial:在可序列化的类上缺少serialVersionUID定义;
自定义注解
[public] @interface 注解名 {
[属性1;]
[属性2;]
...
[属性n;]
属性语法结构:数据类型 属性名() [default 默认属性值];
Ø注解属性默认没有默认值,如果注解中定义了无默认值的注解属性,则使用该注解时必须指定值:
Ø如果注解属性名为value,使用该注解时可以直接赋值:
Ø如果注解属性的数据类型为数组类型,赋多个值时必须使用{}括起来;但若只赋一个值,则无需使用{}:
元注解
•Java提供了四个用于修饰自定义注解的元注解:@Target、@Retention 、@Documented和@Inherited
Ø@Target:用于指定被修饰的自定义注解只能用于修饰程序中哪些元素,该元注解有如下属性值:
1.ElementType.ANNOTATION_TYPE:应用于其他注解的元注解
2.ElementType.CONSTRUCTOR:应用于构造函数
3.ElementType.FIELD:应用于全局属性
4.ElementType.LOCAL_VARIABLE:应用于方法中的本地变量
5.ElementType.METHOD:应用于方法
6.ElementType.PACKAGE:应用于包
7.ElementType.PARAMETER:应用于方法的参数
8.ElementType.TYPE:应用于类、接口或者枚举声明
Ø@Retention:用于指定被修饰的自定义注解可以保留多久,该元注解有如下属性值:
1.RetentionPolicy.SOURCE:编译器将直接丢弃被修饰的注解。
2.RetentionPolicy.CLASS:默认值,编译器将把注解记录在class文件中,当运行Java程序时,虚拟机不再保留注解;
3.RetentionPolicy.RUNTIME:编译器将把注解记录在class文件中,当运行java程序时,虚拟机保留注解,程序可以通过反射获取该注解;
Ø@Documented:执行javadoc命令时,被该元注解修饰的自定义注解也会生成在文档中,如下例:
Ø@Inherited:如果父类所使用的注解有@Inherited修饰,则子类可以继承该注解,否则不能继承。