Java 中的註解:類型、用途和示例
已發表: 2022-05-19Java 等編程語言中的註解是指可以與 Java 源代碼集成的句法元數據。 可以對Java包、變量、類、參數和方法等各種因素進行註解。 開發人員可以輕鬆地直接從源文件中讀取 Java 註釋,就像 Javadoc 標記一樣。
Java 註釋也可以包含在 Java 編譯器的輸出 Java 類文件中並從中讀取。 這使 Java 虛擬機能夠維護註釋並在運行時通過反射讀取它們。 在 Java 中,可以從現有的元註釋構建元註釋。
以下是 Java 中註釋的一些基礎知識:
- 註釋總是以“@”開頭。 例如:“@override”、“@target”、“@SuppressWarnings”等。
- 註釋不會影響已編譯程序的行為。
- 註釋有助於將元數據與方法、類、變量等程序組件相關聯。
- 註釋不僅僅是註釋,因為它們會影響編譯器處理程序的方式。 它們提供有關程序的附加編譯器信息,但不是程序本身的一部分。 因此,這些註解不會影響編譯程序的執行。
Java 中的註解類型
1. 單值註釋
單值註釋只允許一種速記形式,因為它們只包含一個成員。 成員必須在註釋應用後被賦予一個值。 但是,不需要指定註解的名稱。 如果要使用速記,則成員必須具有值。 例如:
@TestAnnotation(“測試”);
2. 完整的註釋
完整的註釋由各種數據組成,例如數據成員、值、對和名稱。
例如:
@TestAnnotation(owner=”Rahul”, value=”Class Geeks”)
從世界頂級大學在線學習軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
3. 重複註釋
當註釋可以多次應用於單個對象時,它被標記為重複註釋。 重複註釋使用 java.lang.annotation 包中定義的 @Repeatable 標記指定。 它的 value 字段表示重複註解的容器類型。
容器被定義為一個帶有一個包含重複註釋數組的值字段的註釋。 要構造重複註解,首先創建容器註解,然後將註解類型指定為@Repeatable 註解的輸入。
例如:
// 演示可重複註解的 Java 程序
// 導入需要的類
導入 java.lang.annotation.Annotation;
導入 java.lang.annotation.Repeatable;
導入 java.lang.annotation.Retention;
導入 java.lang.annotation.RetentionPolicy;
導入java.lang.reflect.Method;
// 使單詞註釋可重複
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(MyRepeatedAnnos.class)
@interface 詞
{
String word() 默認“你好”;
int value() 默認 0;
}
// 創建容器註解
@Retention(RetentionPolicy.RUNTIME)
@interface MyRepeatedAnnos
{
單詞[] 值();
}
公共類主要{
// 在 newMethod 上重複單詞
@Words(word = “第一”, value = 1)
@Words(word = “第二”, value = 2)
公共靜態無效新方法()
{
主 obj = 新的 Main();
嘗試 {
類<?> c = obj.getClass();
// 獲取 newMethod 的註解
方法 m = c.getMethod(“newMethod”);
// 顯示重複的註解
註釋 anno
= m.getAnnotation(MyRepeatedAnnos.class);
System.out.println(anno);
}
捕捉(NoSuchMethodException e){
System.out.println(e);
}
}
公共靜態無效主要(字符串[]參數){新方法(); }
}
最終輸出將是:@MyRepeatedAnnos(value={@Words(value=1, word=”First”), @Words(value=2, word=”Second”)})
探索我們流行的軟件工程課程
SL。 不 | 軟件開發計劃 | |
1 | LJMU & IIITB 計算機科學碩士 | 加州理工學院 CTME 網絡安全證書課程 |
2 | 全棧開發訓練營 | 區塊鏈中的 PG 程序 |
3 | 軟件開發行政研究生課程 - DevOps 專業化 | 查看所有軟件工程課程 |
3. 標記註釋
標記註釋僅用於聲明目的。 此註釋既不包含任何成員,也不存在任何數據。 它的唯一目的是保持作為註釋的存在。 例如:@Override。
4.類型註釋
這些註釋可以在使用類型的任何地方使用。 例如,我們可以註釋一個方法的返回類型。 類型註釋使用@Target 註釋進行標記。
可以說明類型註釋的代碼是:
// 導入需要的類
導入 java.lang.annotation.ElementType;
導入 java.lang.annotation.Target;
// 使用目標註解來註解一個類型
@Target(ElementType.TYPE_USE)
// 聲明一個簡單的類型註解
@interface TypeAnnoDemo{}
// 主類
公共類 GFG {
// 主驅動方法
公共靜態無效主要(字符串[]參數){
// 註釋字符串的類型
@TypeAnnoDemo String string = “這段代碼帶有類型註解”;
System.out.println(string);
abc();
}
// 註釋函數的返回類型
靜態@TypeAnnoDemo int abc() {
System.out.println(“這個函數的返回類型是帶註釋的”);
返回0;
}
預定義註釋的示例
我們前面已經提到過多種預定義註釋。 讓我們來看看:
1.@覆蓋
此標記註釋只能用於方法。 任何帶有@override 註解的方法都必須取代超類中的另一個方法。 否則,將觸發編譯時錯誤。 發生這種情況是因為它必須確保超類實際上被覆蓋,而不僅僅是重載。
可以說明覆蓋註釋的代碼是:
// 第一類
類基礎
{
公共無效顯示()
{
System.out.println(“基礎顯示()”);
}
公共靜態無效主(字符串參數 [])
{
基 t1 = new Derived();
t1.Display();
}
}
// 第 2 類
// 擴展上面的類
類派生擴展基
{
@覆蓋
公共無效顯示()
{
System.out.println(“派生顯示()”);
}
}
2.@目標
它僅用作另一個註釋的註釋。 @Target 接受一個參數,該參數必須是 ElementType 常量。 參數決定它可以應用於哪些聲明。 @Target 註釋可以有多個值,而不僅僅是一個奇異值。 但是,如果必須聲明多個值,則必須採用大括號的形式,例如:@Target({ElementType.FIELD, ElementType.LOCAL_VARIABLE})。
此處可以使用@Retention 註解來確定註解的保留狀態。 三個因素會影響 @Retention 註釋:
- 源代碼:編譯器會忽略註釋,因為它們通常保留在源代碼級別。
- 運行時:在運行時保留。
- 類:註釋保持編譯時,Java 程序忽略。
3.@繼承
此註解只能用於聲明目的,因此只影響某些類聲明。 一個註釋可以取代另一個並繼承其屬性。 因此,如果子類中缺少特定註釋,則可以檢查超類。 但是,如果存在註解,它將獲得 @Inherited 註解。
例如:
// 第一類
類 DeprecatedTest
{
@已棄用
公共無效顯示()
{
System.out.println(“不推薦使用的測試顯示()”);
}
}
// 第 2 類
公共類 SuppressWarningTest
{
// 如果我們在註解下面註釋,程序會生成
// 警告
@SuppressWarnings({“checked”, “deprecation”})
公共靜態無效主(字符串參數 [])
{
DeprecatedTest d1 = new DeprecatedTest();
d1.顯示();
}
}
結論
在這裡,我們了解了 Java 中的註解。 我們還了解了 Java 中的註釋類型及其用途,這可以幫助 Java 開發人員輕鬆創建健壯且可擴展的程序。
如果您想了解有關 Java 概念的更多信息,upGrad 的與工作相關的軟件工程 PG 認證是您全面了解 Java、HTML、JS 等編程語言以及其他軟件開發工具和庫的最佳選擇。
該計劃專為希望在該領域獲得入門級職位的最後一年學生或失業畢業生而設計。 為期 5 個月的課程涵蓋 MERN/Cloud-Native 的專業化,並通過讓學生接觸 5 個動手項目來幫助他們建立一流的作品集。
所以,別等了。 前往 upGrad 並立即預訂您的座位!
什麼是 @jsonproperty 註釋?
Jsonproperty 註釋允許開發人員在序列化和反序列化期間將 JSON 鍵映射到屬性名稱。 基於 Java 的默認設置,鍵在序列化期間映射到 POJO 字段。 Json 註釋通過使用指示映射名稱的字符串屬性來幫助覆蓋此默認功能。
什麼是休眠註解?
Hibernate Annotations 是另一種在映射對象和關係表時指定元數據的技術。 它們是一種功能強大且相對較新的映射方法,可以用來代替 XML 映射元數據。 使用 hibernate 註釋,用戶可以將元數據存儲在單個 POJO java 文件中,該文件也承載代碼,從而有助於更好地理解表結構。
什麼是@SuppressWarnings?
@SuppressWarnings 註釋將被抑制的警告通知編譯器。 通知按名稱以字符串形式出現。 它可以用於任何類型的聲明。 Java 將警告分為兩類,即未檢查和已棄用。 當舊代碼與基於泛型的代碼交互時,會產生未經檢查的警告。