Java @Target 注解


当我们开始学习Java时,我们常常会对代码块中出现的@override和@inherited之类的符号感到疑惑。它们是一种特殊的标记,称为注解,可以应用于方法、字段、参数以及代码的其他元素。@Target 注解是元注解的一种类型,它指定定义的注解类型适用于哪些代码块元素。不要被这些术语搞混,我们将在本文中消除所有疑问和困惑。

Java 的 @Target 注解

首先我们需要理解什么是注解以及它们在 Java 中的作用。

Java 注解是 Java 的一个强大功能,它允许我们向代码添加元数据。这里的元数据是指关于特定代码块的附加信息。它们可以用于各种目的,包括文档、验证、测试、依赖注入等等。它们以“@”符号开头,并且可以具有提供附加信息的可选属性。

Java 支持两种类型的注解:内置注解和自定义注解。内置注解具有预定义的含义和行为。

以下是一些内置注解:

  • @Override - 它表示一个方法覆盖了超类或接口中的另一个方法。

  • @Deprecated - 用于将元素标记为已过时,以便在使用它时生成警告。

  • @SuppressWarnings - 抑制编译器警告。

到目前为止,我们已经了解了注解及其一些预定义的注解。现在,让我们讨论如何创建自定义注解。

如何创建注解?

第一步是用@interface关键字声明它,后跟注解的名称。然后,下一步是添加一些属性来描述新创建的注解。属性可以是一些变量。

语法

@interface nameOfAnnotation { // declaration
   // Attributes
}
@nameOfAnnotation( values ) // initialization

示例

在下面的示例中,我们将创建一个名为“Author_details”的注解,以及它的两个必填属性“name”和“email”。

// declaring the annotation
@interface Author_details {
   // attributes of annotation
   String name(); 
   String email(); 
}
// to use the annotation
@Author_details(name = "Shriansh Kumar", email = "[email protected]")
public class Example1 {
   public static void main(String[] args) {
      System.out.println("This is an example of Annotation");
   }
}

输出

This is an example of Annotation

如何使用 @Target 注解注解?

有时,用户创建的注解可能无法传达其全部目的。对于这种情况,Java 提供了四个元注解,即 @Documentation、@Target、@Retention 和 @Inherited,以便以注解的形式为用户定义的注解提供其他元数据。这将有助于编译器在编译期间强制执行所需的功能。

@Target 注解采用来自 java.lang.annotation.ElementType 枚举的数组作为其参数。ElementType 枚举定义了可以在 Java 中添加注解的元素的可能类型。这些值是:

  • ANNOTATION_TYPE - 注解类型声明

  • CONSTRUCTOR - 构造函数声明

  • FIELD - 字段声明

  • LOCAL_VARIABLE - 局部变量声明

  • METHOD - 方法声明

  • PACKAGE - 包声明

  • PARAMETER - 参数声明

  • TYPE - 类、接口、枚举或记录声明

  • TYPE_PARAMETER - 类型参数声明

  • TYPE_USE - 类型的使用

语法

@Target({ElementType.nameOfanyValues})
@interface nameOfCustomAnnotation {
   // attributes of annotation come here
}

示例

在这个例子中,我们将使用值为“TYPE”的 @Target 创建一个自定义注解,这意味着此注解适用于类、接口枚举

import java.lang.annotation.*;
// declaring the annotations
@Target({ElementType.TYPE})
@interface Author_details {
   // attributes of annotation
   String name() default "Shriansh Kumar"; 
   String email() default "[email protected]"; 
}
// to use the annotation
@Author_details
public class Example2 {
   public static void main(String[] args) {
      System.out.println("Annotating an Annotation using @Target");
   }
}

输出

Annotating an Annotation using @Target

结论

在本文中,我们首先学习了内置注解,在后面的部分,我们讨论了借助示例程序创建和使用自定义注解的过程。我们还发现了@Target注解在注解其他注解中的用法。请注意,注解只是告诉我们关于代码块的信息,它不会影响整个代码的工作。

更新于:2024-7-23

1K+ 浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告