2020 12.12 曾宇欣

1 注解(Annotation)

2 概念

注解是 JDK 1.5 的特性

注解是 java 代码中的特殊标记,是类的组成部分,可以携带一些特殊信息

注解可以加在包、类、字段、方法、方法参数以及局部变量上。

注解是给编译器或 JVM 看的,编译器或 JVM 可以根据注解来完成相应的功能。

注解的形式是以 @ 符号开头,我们已经见过的注解有

@Override / @SupperssWarnings("serial") 等

3 注解的作用

从 JVM 的角度看,注解本身对代码逻辑没有任何影响,如何使用注解完全由工具决定。

Java的注解可以分为四类:

\1. 由编译器使用的注解,例如:

@Override :让编译器检查该方法是否正确地实现了覆写(重写)

@SuppressWarnings :告诉编译器忽略此处代码产生的警告

这类注解不会被编译进入 .class 文件,它们在编译后就被编译器去掉了

\2. 生成文档。这是最常见的,也是 java 最早提供的注解。常用的有 @see 、 @param 、 @return 、

@author 、 @version 等,就是告诉 Javadoc 工具在生成帮助文档时把作者姓名和版本号等也标

记在文档中

\3. 会被编译器编译到 .class 文件中的注解,这类注解只被一些底层库使用,一般我们不必自己处理

\4. 在程序运行期能够读取的注解,它们在加载后一直存在于 JVM 中,这也是最常用的注解。比如:

@Deprecated (废弃)

包 java.lang.annotation 中包含所有定义自定义注解所需用到的注解和接口。

java.lang.annotation.Annotation 是所有所有注释类型扩展的公共接口。此接口本身并不定义注释

类型

6 元注解

简单说定义注解的注解就是元注解。 java 中提供了一些元注解,它们都在 java.lang.annotation 包

中,分别是:

@Target :指明此注解用在哪个位置,如果不写默认是任何地方都可以使用

@Retention :定义该注解的生命周期(有效范围)

@Documented :指定被其修饰的注解将被 javadoc 工具提取成文档,此注解没有成员。

@Inherited :子类是否可继承父类定义的 Annotation , @Inherited 仅针对

@Target(ElementType.TYPE) 类型的 annotation 有效,并且仅针对 class 的继承,对

interface 的继承无效

@Repeatable :表示这个注解可以重复使用,使用并不是太广

常用的是前两个注解。

标签

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1