什么是注解?
代码中的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。
注解的作用?
编写文档、代码分析、编译检查等。
最常见的注解:
@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运行时保留,可以通过反射读取到 |