Java反射之註解的使用

Annotation(註解) 概述

Annotation 其實就是代碼裏的特殊標記, 它用於替代配置文件,也就是說,傳統方式通過配置文件告訴類如何運行,有了註解技術後,開發人員可以通過註解告訴類如何運行。

三個基本的 Annotation:

@Override: 限定重寫父類方法, 該註解只能用於方法
@Deprecated: 用於表示某個程序元素(類, 方法等)已過時
@SuppressWarnings: 抑制編譯器警告. 

開發人員應該掌握什麼:

編寫註解
解析註解,並根據註解信息去運行程序。

自定義 Annotation

自定義註解的目標:原來寫在配置文件中的信息,可以通過註解描述
定義Annotation 使用 @interface 關鍵字
配置文件的信息,在註解中採用屬性描述
例:String name(); 這樣寫既是方法也是屬性;
帶默認值的方式:String name() default “xxx”
註解屬性的類型只能是如下類型:
String類型
8大基本數據類型
Class類型
枚舉類型
註解類型
以上類型的一維數組
特殊屬性value:如果註解中有一個名稱value的屬性,那麼使用註解時可以省略value=部分,如@MyAnnotation(“xxx")
特殊屬性value[];

JDK 的元 Annotation

元 Annotation指修飾Annotation的Annotation。JDK中定義瞭如下元Annotation:
@Retention: 只能用於修飾一個 Annotation 定義, 用於指定該 Annotation 可以保留的域, @Rentention 包含一個 RetentionPolicy 類型的成員變量, 通過這個變量指定域。
RetentionPolicy.SOURCE: 編譯器直接丟棄這種策略的註釋
RetentionPolicy.CLASS: 編譯器將把註解記錄在 class 文件中. 當運行 Java 程序時, JVM 不會保留註解. 這是默認值
RetentionPolicy.RUNTIME:編譯器將把註釋記錄在 class 文件中. 當運行 Java 程序時, JVM 會保留註解. 程序可以通過反射獲取該註釋,開發中要設成RUNTIME

JDK 的元 Annotation 2

@Target:指定註解用於修飾類的哪個成員. @Target 包含了一個名爲 value,類型爲ElementType的成員變量。target默認作用類所有成員
@Documented: 用於指定被該元 Annotation 修飾的 Annotation 類將被 javadoc 工具提取成文檔.
@Inherited: 被它修飾的 Annotation 將具有繼承性.如果某個類使用了被 @Inherited 修飾的 Annotation, 則其子類將自動具有該註解

解析Annotation 信息

JDK 5.0 在 java.lang.reflect 包下新增了 Annotation 接口, 該接口代表程序中可以接受註解。
當一個 Annotation 類型被定義爲運行時 Annotation 後, 該註釋纔是運行時可見, 當 class 文件被載入時保存在 class 文件中的 Annotation 纔會被虛擬機讀取
程序可以調用 AnnotationElement 對象的如下方法來訪問 Annotation 信息













發佈了143 篇原創文章 · 獲贊 59 · 訪問量 70萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章