Annotation(註解) 概述
Annotation 其實就是代碼裏的特殊標記, 它用於替代配置文件,也就是說,傳統方式通過配置文件告訴類如何運行,有了註解技術後,開發人員可以通過註解告訴類如何運行。
三個基本的 Annotation:
@Override: 限定重寫父類方法, 該註解只能用於方法@Deprecated: 用於表示某個程序元素(類, 方法等)已過時
@SuppressWarnings: 抑制編譯器警告.
開發人員應該掌握什麼:
編寫註解解析註解,並根據註解信息去運行程序。
自定義 Annotation
定義Annotation 使用 @interface 關鍵字
配置文件的信息,在註解中採用屬性描述
帶默認值的方式:String name() default “xxx”
註解屬性的類型只能是如下類型:
String類型
8大基本數據類型
Class類型
枚舉類型
註解類型
以上類型的一維數組
特殊屬性value:如果註解中有一個名稱value的屬性,那麼使用註解時可以省略value=部分,如@MyAnnotation(“xxx")
特殊屬性value[];
JDK 的元 Annotation
@Retention: 只能用於修飾一個 Annotation 定義, 用於指定該 Annotation 可以保留的域, @Rentention 包含一個 RetentionPolicy 類型的成員變量, 通過這個變量指定域。
RetentionPolicy.SOURCE: 編譯器直接丟棄這種策略的註釋
RetentionPolicy.RUNTIME:編譯器將把註釋記錄在 class 文件中. 當運行 Java 程序時, JVM 會保留註解. 程序可以通過反射獲取該註釋,開發中要設成RUNTIME
JDK 的元 Annotation 2
@Documented: 用於指定被該元 Annotation 修飾的 Annotation 類將被 javadoc 工具提取成文檔.
@Inherited: 被它修飾的 Annotation 將具有繼承性.如果某個類使用了被 @Inherited 修飾的 Annotation, 則其子類將自動具有該註解
解析Annotation 信息
當一個 Annotation 類型被定義爲運行時 Annotation 後, 該註釋纔是運行時可見, 當 class 文件被載入時保存在 class 文件中的 Annotation 纔會被虛擬機讀取
程序可以調用 AnnotationElement 對象的如下方法來訪問 Annotation 信息