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 = "shriansh.kumar@tp.com")
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 "shriansh.kumar@tp.com"; 
}
// 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+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告