什么是注解?

代码中的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。

注解的作用?

编写文档、代码分析、编译检查等。

最常见的注解:

@Override 注解,它的作用是告诉编译器这个方法是不是重写父类的方法。

@Deprecated 注解,它的作用是提示我们这个方法可能由于多重原因而被弃用,例如使用它可能会导致错误,或者在未来的版本中进行不兼容的更改或删除等。

元注解

java中的元注解包括:@Target @Documented @Inherited @Native @Repeatable @Retention

它们可以在 JDK11 中的 java.lang.annotation 包中可以找到定义。

@Target注解标识可以应用的Java元素的类型:

类型

描述

ElementType.TYPE

类、接口(包括注解类型)或枚举的声明

ElementType.FIELD

字段声明(包括枚举常量)

ElementType.METHOD

方法声明

ElementType.PARAMETER

形参声明

ElementType.CONSTRUCTOR

构造方法声明

ElementType.LOCAL_VARIABLE

局部变量声明

ElementType.ANNOTATION_TYPE

注解类型声明

ElementType.PACKAGE

包声明

ElementType.TYPE_PARAMETER

类型参数声明

ElementType.TYPE_USE

类型的使用

ElementType.MODULE

模块声明

@Retention注解表明生命周期

生命周期

描述

RetentionPolicy.SOURCE

将被编译器丢弃

RetentionPolicy.CLASS

将被记录在class文件中,但不需要在JVM运行时保留。默认的生命周期是CLASS

RetentionPolicy.RUNTIME

将被记录在class文件中,在JVM运行时保留,可以通过反射读取到