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注解在注解其他注解中的用法。请注意,注解只是告诉我们关于代码块的信息,它不会影响整个代码的工作。