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 :表示这个注解可以重复使用,使用并不是太广
常用的是前两个注解。
近期评论