----------- android培訓、java培訓、java學習型技術博客、期待與您交流! -----------
註解(Annotation ) 是JDK 1.5 的新特性,現已應用於Spring , EJB ,JPA... 使用註解是一種趨勢。它可以用於創建文檔,跟蹤代碼中的依賴性,甚至執行基本編譯時檢查。註釋是以‘@註釋名’在代碼中存在的,根據註釋參數的個數,我們可以將註釋分爲:標記註釋、單值註釋、完整註釋三類。它們都不會直接影響到程序的語義,只是作爲註釋(標識)存在,我們可以通過反射機制編程實現對這些元數據的訪問。另外,你可以在編譯時選擇代碼裏的註釋是否只存在於源代碼級,或者它也能在class文件中出現。
註解是向編譯器或工具軟件傳達一種信息,相當於是一種標記,加了註解就等於打上了某種標記,沒加,則等於沒有某種標記,以後,javac編譯器,開發工具或其它程序可以用反射來了解你的類及各種元素上有無何種標記,看你有什麼標記,就去幹相應的事情。標記可以加在包,類,字段,方法,方法的參數以及局部變量上。
註解的語法可以看Java語言規範瞭解,即Java的language specification 。
註解的語法比較簡單,除了@符號的使用以外,它基本上與java的固有語法一致,java內置了三種最基本的註解,定義在java.lang包中。
@Override 表示當前方法是覆蓋父類的方法。
@Deprecated 表示當前元素是不贊成使用的。
@SuppressWarnings 表示關閉一些不當的編譯器警告信息。{
@SuppressWarnings,其參數有:
deprecation,使用了過時的類或方法時的警告
unchecked,執行了未檢查的轉換時的警告
fallthrough,當 Switch 程序塊直接通往下一種情況而沒有 Break 時的警告
path,在類路徑、源文件路徑等中有不存在的路徑時的警告
serial,當在可序列化的類上缺少 serialVersionUID 定義時的警告
finally ,任何 finally 子句不能正常完成時的警告
all,關於以上所有情況的警告
}元註解@Target,@Retention,@Documented,@Inherited
(元註解指的是註解中的註解)
@Target 表示該註解用於什麼地方,可能的 ElemenetType 參數包括:
ElemenetType.CONSTRUCTOR 構造器聲明
ElemenetType.FIELD 域聲明(包括 enum 實例)
ElemenetType.LOCAL_VARIABLE 局部變量聲明
ElemenetType.METHOD 方法聲明
ElemenetType.PACKAGE 包聲明
ElemenetType.PARAMETER 參數聲明
ElemenetType.TYPE 類,接口(包括註解類型)或enum聲明
@Retention 表示在什麼級別保存該註解信息。可選的 RetentionPolicy 參數包括:
RetentionPolicy.SOURCE 註解將被編譯器丟棄
RetentionPolicy.CLASS 註解在class文件中可用,但會被VM丟棄
RetentionPolicy.RUNTIME VM將在運行期也保留註釋,因此可以通過反射機制讀取註解的信息。
@Documented 將此註解包含在 javadoc 中
@Inherited 允許子類繼承父類中的註解
自定義註解:
它類似於新創建一個接口類文件,但爲了區分,我們需要將它聲明爲@interface
爲自定義註釋添加變量
爲註解添加高級屬性
1數組類型的屬性
int[] arrayAttr() defaule{1.,2,3}
@MyAnnotation(arrayAttr={1,4,5})
如果數組屬性中只有一個元素,這時候屬性值部分可以省略大括號
2枚舉類型的屬性
Enumtest.TrafficLamp lamp()
@MyAnnotation(lamp = EumTest.trafilcLamp.GREEN)
3註解類型的屬性
MetaAnnotation annotationAtrr() default @MtaAnnotation("xxx")
----------- android培訓、java培訓、java學習型技術博客、期待與您交流! -----------