Java編程思想學習課時(七)第20章-註解

來源:互聯網
上載者:User

註解(也被稱為中繼資料)為我們在代碼中添加資訊提供了一種形式化的方法,使我們可以在稍後某個時刻非常方便地使用這些資料。

1 基本文法

  被註解的方法與其他的方法沒有區別。註解可以與任何修飾符共同作用於方法,例如,public, static或void。從文法的角度來看,註解的使用方式幾乎與修飾符的使用一模一樣。

1.1 定義註解

  註解的定義看起來很像介面的定義。事實上,與其他任何Java介面一樣,註解也將會編譯成class檔案

  定義註解時會需要一些元註解(meta-annotation),如@Target@Retention

  在註解中,一般都會包含一些元素以表示某些值。當分析處理註解時,程式或工具可以利用這些值。註解的元素看起來就像介面的方法,唯一的區別是你可以為其指定預設值。元素的類型有限制。

  沒有元素的註解稱為標記註解(marker annotation)

  所有註解都繼承了annotation

package net.mrliuli.annotations;import java.lang.annotation.*;@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface Test {} //(marker annotation)

1.2 三種標準註解和四種元註解

  定義在java.lang中的三種標準註解:

  • @Overrided

  • @Deprecated

  • @SuppressWarnings

  四種元註解:

  • @Target 表示該註解可以用於什麼地方。

  • @Retension 表示需要在什麼層級儲存該註解資訊。

  • @Documented 將此註解包含在Javadoc中。

  • @Inherited 允許子類繼承父類中的註解。

1.3 關於註解

  • 註解元素的類型有限制,不可以是任意類型,使用除允許類型以外的類型編譯器會報錯。

  • 預設值限制:

    @Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface SimulationNull{    public int id() default -1;    public String description() default "";}
    • 首先,元素不能有不確定的值。也就是說,元素必須要麼具有預設值,要麼在使用註解時提供元素的值。

    • 其次,對於非基本類型的元素,無論是在原始碼中聲明時,或是在註解介面中定義預設值時,都不能以null作為其值。這個約束使得註解處理器很難表現一個元素的存在或缺失的狀態,因為在每個註解的聲明中,所有的元素都存在,並且都具有相應的值。為了繞開這個約束,我們只能自己定義一些特殊的值例如Null 字元串或負數,以此表示某個元素不存在:

  • 產生外部檔案。有些framework需要一些額外的資訊才能與你的原始碼協同工作,而這種情況最適合註解表現其價值了。像Enterprise JavaBean這樣的技術,需要部署描述檔案。Web Service、自訂標籤庫以及對象/關係映射工具(如Toplink和Hibernate)等,一般都需要XML描述檔案,而這些描述檔案脫離於原始碼之外。

2 編寫註解處理器

  使用註解的過程中,很重要的一部分就是建立與使用註解處理器,用來讀取註解。

  • 反射機制的API可以構造註解處理器

  • 外部工具apt可以解析帶有註解的Java原始碼

相關文章:

Java編程思想學習課時(五)第18章-Java IO系統

Java編程思想學習課時(六)第19章-枚舉類型

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.