Java 注解

注解+反射

注解

概念

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

常见的元注解:@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 注解用在哪里:类上、方法上、属性上

l @Retention 注解的生命周期:源文件中、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

你可能感兴趣的:(Java 注解)