Java Annotation入門

來源:互聯網
上載者:User

摘要:

本文針對java初學者或者annotation初次使用者全面地說明了annotation的使 用方法、定義方式、分類。初學者可以通過以上的說明製作簡單的annotation程 序,但是對於一些進階的annotation應用(例如使用自訂annotation產生 javabean映射xml檔案)還需要進一步的研究和探討。涉及到深入annotation的內 容,作者將在後文《Java Annotation進階應用程式》中談到。

同時,annotation運行存在兩種方式:運行時、編譯時間。上文中討論的都是在 運行時的annotation應用,但在編譯時間的annotation應用還沒有涉及,

一、為什麼使用Annotation:

在JAVA應用中,我們常遇到一些需要使用模版代碼。例如,為了編寫一個JAX -RPC web service,我們必須提供一對介面和實現作為模版代碼。如果使用 annotation對遠端存取的方法代碼進行修飾的話,這個模版就能夠使用工具自動 產生。

另 外,一些API需要使用與程式碼同時維護的附屬檔案。例如,JavaBeans 需要一個BeanInfo Class與一個Bean同時使用/維護,而EJB則同樣需要一個部署 描述符。此時在程式中使用annotation來維護這些附屬檔案的資訊將十分便利而 且減少了錯誤。

二、Annotation工作方式:

在5.0 版之前的Java平台已經具有了一些ad hoc annotation機制。比如,使 用transient修飾符來標識一個成員變數在序列化子系統中應被忽略。而 @deprecated這個 javadoc tag也是一個ad hoc annotation用來說明一個方法已 過時。從Java5.0版發布以來,5.0平台提供了一個正式的annotation功能:允許 開發人員定義、使用自己的annoatation類型。此功能由一個定義annotation類型的 文法和一個描述annotation聲明的文法,讀取annotaion 的API,一個使用 annotation修飾的class檔案,一個annotation處理工具(apt)組成。

annotation並不直接影響代碼語義,但是它能夠工作的方式被看作類似程式的 工具或者類庫,它會反過來對正在啟動並執行程式語義有所影響。annotation可以從 源檔案、class檔案或者以在運行時反射的多種方式被讀取。

當然annotation在某種程度上使javadoc tag更加完整。一般情況下,如果這 個標記對java文檔產生影響或者用於產生java文檔的話,它應該作為一個javadoc tag;否則將作為一個annotation。

三、Annotation使用方法:

1。型別宣告方式:

通常,應用程式並不是必須定義annotation類型,但是定義annotation類型並 非難事。Annotation型別宣告於一般的介面聲明極為類似,區別只在於它在 interface關鍵字前面使用“@”符號。

annotation 類型的每個方法聲明定義了一個annotation類型成員,但方法聲 明不必有參數或者異常聲明;方法傳回值的類型被限制在以下的範圍: primitives、String、Class、enums、annotation和前面類型的數組;方法可以 有預設值。

下面是一個簡單的annotation型別宣告:

清單1:

/**
   * Describes the Request-For-Enhancement(RFE) that led
   * to the presence of the annotated API element.
   */
   public @interface RequestForEnhancement {
     int   id();
     String synopsis();
     String engineer() default "[unassigned]";
     String date();   default "[unimplemented]";
   }

代碼中只定義了一個annotation類型RequestForEnhancement。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.