Java 中的注解是如何工作的?

2025年5月13日 | 阅读 4 分钟

在 Java 中,注解是关于源代码的元数据。它们不会直接影响 Java 程序的执行。Java 注解在 JDK 5 中引入。使用注解的主要目的是在程序编译时和运行时为编译器提供指令。

Java 中的内置注解

Java 中有三个内置注解,

1. @Override

当我们在进行继承时使用此注解。子类重写了基类中声明的方法。建议使用此注解,这样即使有人更改了基类中的方法名,编译器也会显示错误消息。否则,要识别此类错误将是一项艰巨的任务。

示例

在此,dummymethod() 最初是在 SampleParent 类中声明的,并在 SampleChild 类中重写。

2. @Deprecated

@Deprecated 注解是一种内置注解,用于程序中不再使用的数据成员。如果调用或使用了 @Deprecated 数据成员,编译器会显示警告消息。建议使用 @Deprecated 注解来解释弃用方法、类或数据变量的原因。

示例

在此,SampleAnnotate 类使用 @Deprecate 注解被弃用。而 @deprecated 符号解释了原因。

3. @SuppressWarnings

在此,deprecatedmethod() 在基类中被弃用,但仍可以使用 @SuppressWarnings 进行重写。

注解的类型

1. 标记注解

标记注解的目的是标记一个声明。它不包含任何类型的数据或成员。

示例: @Override

2. 单值注解

只包含一个数据值或方法的注解称为单值注解。数据元素的名称默认为 value。

示例: @Annotaionexample("DataMemberName")

3. 完全注解

这种注解有多个数据元素,用逗号分隔。

示例: @Annotaionexample(value1=" DataMemberName", value2=" DataMemberName")

4. 类型注解

类型注解可用于注解任何方法或数据变量的类型。类型注解使用 @Target 注解进行注解。

示例: 以下程序演示了类型注解。

SampleTypeAnnotation.java

输出

This program demonstrates type annotation
This method return type uses type annotation

如何创建自定义注解?

为了创建自定义注解,可以使用 @interface 注解。它会告知 Java 编译器有关自定义注解的信息。以下示例显示了如何创建自定义注解。

以下代码显示了上面声明的自定义注解的使用。

上面的代码中初始化了自定义注解内的所有数据成员。

注解的放置

1. 注解的级别

Java 程序中的注解可以放置在类、方法、变量或接口的开头。以下是注解的两个级别。

i) 类级别注解

放置在类正上方的注解称为类级别注解。

示例

在此,@Entity 是自定义类级别注解。

ii) 方法级别注解

放置在方法正上方的注解称为方法级别注解。

示例

在上面的代码中,@SampleAnnotation 是一个自定义注解。

2. 类型注解

起初,程序员只允许在数据成员的声明部分使用注解。但现在我们可以在任何类型声明的地方使用注解。

示例

上面的示例声明了一个带有 @NonNull 注解的 String 类型列表。