一、介绍:
注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方式,使我们可以在稍后的某个时刻更容易的使用这些数据。
注解是 Java 5 所引入的众多语言变化之一。它们提供了 Java 无法表达的但是你需要完整表述程序所需的信息。因此,注解使得我们可以以编译器验证的格式存储程序的额外信息。注解可以生成描述符文件,甚至是新的类定义,并且有助于减轻编写“样板”代码的负担。通过使用注解,你可以将元数据保存在 Java 源代码中。并拥有如下优势:简单易读的代码,编译器类型检查,使用 annotation API 为自己的注解构造处理工具。即使 Java 定义了一些类型的元数据,但是一般来说注解类型的添加和如何使用完全取决于你。
二、Jdk中常见的注解:
- @Override: 表示当前的方法定义将覆盖基类的方法。如果你不小心拼写错误,或者方法签名被错误拼写的时候,编译器就会发出错误提示。
- @Deprecated: 如果使用该注解的元素被调用,编译器就会发出警告信息。
- @SuppressWarnings: 关闭不当的编译器警告信息。
- @SafeVarargs: 在 Java 7 中加入用于禁止对具有泛型varargs参数的方法或构造函数的调用方
- @FunctionalInterface: Java 8 中加入用于表示类型声明为函数式接口
每当创建涉及重复工作的类或接口时,你通常可以使用注解来自动化和简化流程。例如在 Enterprise JavaBean(EJB)中的许多额外工作就是通过注解来消除的。
三、元注解(本文并没有实操所有元注解,想学习可自查)
Java 语言中目前有 5 种标准注解(前面介绍过),以及 5 种元注解。元注解用于注解其他的注解
注解 | 解释 |
@Target | 表示注解可以用于哪些地方。可能的 ElementType 参数包括: CONSTRUCTOR:构造器的声明; FIELD:字段声明(包括 enum 实例); LOCAL_VARIABLE:局部变量声明; METHOD:方法声明; PACKAGE:包声明; PARAMETER:参数声明; TYPE:类、接口(包括注解类型)或者 enum 声明。 |
@Retention | 表示注解信息保存的时长。可选的 RetentionPolicy 参数包括: SOURCE:注解将被编译器丢弃; CLASS:注解在 class 文件中可用,但是会被 VM 丢弃; RUNTIME:VM 将在运行期也保留注解,因此可以通过反射机制读取注解的信息。 |
@Documented | 将此注解保存在 Javadoc 中 |
@Inherited | 允许子类继承父类的注解 |
@Repeatable | 允许一个注解可以被使用一次或者多次(Java 8)。 |
四、定义注解:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @Author: lblz
* @Description: 注解定义
* @Date: 2022/5/5 14:35
*/
@Target({
ElementType.METHOD