注解

概念

注解很厉害,它可以增强我们的java代码,同时利用反射技术可以扩充实现很多功能。它们被广泛应用于三大框架底层。传统我们通过xml文本文件声明方式,而现在最主流的开发都是基于注解方式,代码量少,框架可以根据注解去自动生成很多代码,从而减少代码量,程序更易读。标志是@ ,英文叫Annotation,可以用现成的已经存在的,也可以自定义注解。

常见的元注解:@Target、@Retention,jdk提供将来描述我们自定义的注解的注解。

分类

l JDK自带注解

l 元注解

l 自定义注解

JDK注解

JDK注解的注解,就5个:

l @Override

l @Deprecated标记就表明这个方法已经过时了,但我就要用,别提示我过期

l @SuppressWarnings(“deprecation”) 忽略警告

l @SafeVarargs jdk1.7出现,堆污染,不常用

l @FunctionallInterface jdk1.8出现,配合函数式编程拉姆达表达式,不常用

元注解

描述注解的注解,就5个:

l @Target 注解用在哪里,ElementType工具类维护了具体的值:类上、方法上、属性上

l @Retention 注解的生命周期,RetentionPolicy工具类维护了具体的值:源文件中、class文件中、运行中

l @Inherited 允许子注解继承

l @Documented 生成javadoc时会包含注解,不常用

l @Repeatable注解为可重复类型注解,可以在同一个地方多次使用,不常用

元注解

@Target ElementType.class

描述注解的使用范围:

l ElementType.ANNOTATION_TYPE 应用于注释类型

l ElementType.CONSTRUCTOR 应用于构造函数

l ElementType.FIELD 应用于字段或属性

l ElementType.LOCAL_VARIABLE 应用于局部变量

l ElementType.METHOD 应用于方法级

l ElementType.PACKAGE 应用于包声明

l ElementType.PARAMETER 应用于方法的参数

l ElementType.TYPE 应用于类的元素

@Retention RetentionPolicy.class

定义了该注解被保留的时间长短,某些注解仅出现在源代码中,而被编译器丢弃;

而另一些却被编译在class文件中; 编译在class文件中的注解可能会被虚拟机忽略,而另一些在class被装载时将被读取。

为何要分有没有呢?没有时,反射就拿不到,从而就无法去识别处理。

l SOURCE 在源文件中有效(即源文件保留)

l CLASS 在class文件中有效(即class保留)

l RUNTIME 在运行时有效(即运行时保留)

自定义注解

image
在自定义注解中,添加属性的话,如果属性名不是value,在使用自定义注解的时候,必须要写属性名=


16 声望8 粉丝

« 上一篇
Java 设计模式
下一篇 »
Java 反射