Annotation

Meta Annotation: 元註解的做用就是負責註解其餘註解元註解有四種,以下:1. @Target    @Target說明了Annotation所修飾的對象範圍,用於描述註解的使用範圍,即被描述的註解能夠用在什麼地方    Annotation可被用於 packages、types(類、接口、枚舉、Annotation類型)、類型成員(方法、構造方法、成員變量、枚舉值)、方法參數和本地變量(如循環變量、catch參數)。    在Annotation類型的聲明中使用了@Target可更加明晰其修飾的目標    @Target取值(ElementType):        CONSTRUCTOR:用於描述構造器        FIELD:用於描述域        LOCAL_VARIABLE:用於描述局部變量        METHOD:用於描述方法        PACKAGE:用於描述包        PARAMETER:用於描述參數        TYPE:用於描述類、接口(包括註解類型) 或enum聲明2. @Retention    @Retention定義了該Annotation的生命週期    某些Annotation僅出如今源代碼中,而被編譯器丟棄;而另外一些卻被編譯在class文件中;編譯在class文件中的Annotation可能會被虛擬機忽略,而另外一些在class被裝載時將被讀取(請注意並不影響class的執行,由於Annotation與class在使用上是被分離的)    @Retention取值來自java.lang.annotation.RetentionPolicy的枚舉類型值:        SOURCE:在源文件中有效(即源文件保留)        CLASS:在class文件中有效(即class保留)        RUNTIME:在運行時有效(即運行時保留)3. @Documented    @Documented用於描述其它類型的annotation應該被做爲被標註的程序成員的公共API,所以能夠被例如javadoc此類的工具文檔化。@Documented是一個標記註解,沒有成員。4. @Inherited    @Inherited 是一個標記註解。若是一個使用了@Inherited修飾的annotation類型被用於一個class,則這個Annotation將被用於該class的子類。自定義Annotation:Java內置Annotation:1. @Override    @Override 是一個標記型Annotation,說明了被標註的方法覆蓋了父類的方法,起到了斷言的做用2. @Deprecated    @Deprecated 標記型Annotation,說明被修改的元素已被廢棄並不推薦使用,編譯器會在該元素上加一條橫線以做提示3. @SuppressWarnnings    @SuppressWarnnings 用於通知Java編譯器關閉對特定類、方法、成員變量、變量初始化的警告。    常見的警告名爲下。    unchecked 執行了未檢查的轉換時的警告。例如當使用集合時沒有用泛型來指定集合的類型    finally finally子句不能正常完成時的警告    fallthrough 當switch程序塊直接通往下一種狀況而沒有break時的警告    deprecation 使用了棄用的類或者方法時的警告    seriel 在可序列化的類上缺乏serialVersionUID時的警告    path 在類路徑、源文件路徑等中有不存在的路徑時的警告    all 對以上全部狀況的警告Annotation與Interface的異同:    Annotation類型使用關鍵字@interface而非interface。注意開頭的@符號    Annotataion的方法定義是受限制的。其方法必須聲明爲無參數、無異常拋出的。這些方法同時也定義了Annotation的成員——方法名即爲成員名,而方法返回類型即爲成員類型。方法返回類型必須爲Java基礎類型、Class類型、枚舉類型、Annotation類型或者相應的一維數組。方法後面能夠使用default關鍵字和一個默認數值來聲明成員的默認值,null不能做爲成員默認值。成員通常不能是泛型,只有當其類型是Class時能夠使用泛型,由於此方法可以用類型轉換將各類類型轉換爲Class    Annotation和interface均可以定義常量、靜態成員類型,也均可以被實現或者繼承
相關文章
相關標籤/搜索