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註解在註解其他註解中的用法。請注意,註解只是告訴我們關於程式碼塊的資訊,它不會影響整個程式碼的工作。