java註解基本定義在java.lang.annotation包下
介紹:
爲java 編程語言註解設施提供類庫支持
描述:這是jdk1.6版本的 annotation 類庫結構描述
接口摘要 | |
---|---|
Annotation | 所有 annotation 類型都要擴展的公共接口。 |
枚舉摘要 | |
---|---|
ElementType | 程序元素類型。 |
RetentionPolicy | 註釋保留策略。 |
異常摘要 | |
---|---|
AnnotationTypeMismatchException | 若某個註釋的類型在對該註釋進行編譯(或序列化)後發生了更改,而程序試圖訪問該註釋的元素時,拋出此異常。 |
IncompleteAnnotationException | 若某個註釋在編譯(或序列化)後將某個註釋類型添加到其類型定義中,而程序試圖該註釋類型的元素時,拋出此異常。 |
錯誤摘要 | |
---|---|
AnnotationFormatError | 當註釋解析器試圖從類文件讀取註釋並確定註釋出現異常時,拋出該錯誤。 |
註釋類型摘要 | |
---|---|
Documented | 指示某一類型的註釋將通過 javadoc 和類似的默認工具進行文檔化。 |
Inherited | 指示註釋類型被自動繼承。 |
Retention | 指示註釋類型的註釋要保留多久。 |
Target | 指示註釋類型所適用的程序元素的種類。 |
公共接口
接口:annotation
定義:所有的annotation類型都要擴展的公共接口,注意: 手動擴展該公共接口的接口不擴展annotation類型,此接口本身也不定義annotation類型
方法:
annotationType() ;返回此annotation註釋的類型
equals(Object obj);如果指定的對象在邏輯上等效於此接口的註釋類型,則返回true
hashCode();返回此annotation的哈希碼
toString();返回此annotation的字符串表示形式
枚舉類型:
1.ElementType
繼續自 Enum<ElementType>,實現Serializable, Comparable<ElementType> 接口
定義:程序元素類型,此枚舉類型的常量提供了java程序中聲明的元素的簡單分類,這些常量與Target
元註釋一起使用,以指定在什麼情況使用註釋類型是合法的
常量:
ANNOTATION_TYPE :註釋類型聲明
CONSTRUCTOR:構造方法聲明
FIELD:字段聲明(包括枚舉常量)
LOCAL_VARIABLE :局部變量聲明
METHOD:方法聲明
PACKAGE:包聲明
PARAMETER:參數聲明
TYPE:類,接口或枚舉聲明
方法:
valueOf(String name);返回帶有指定名稱的該類型的枚舉常量
values();按照聲明的順序返回包含此枚舉類型常量的數組
2.RetentionPolicy
繼續自 Enum<RetentionPolicy>,實現Serializable, Comparable<RetentionPolicy> 接口
定義:註釋保留策略,此枚舉類型的常量描述保留註釋的不同策略,他們與Retention
元註釋一起使用,以指定保留多長的註釋
常量:
CALSS: 編譯器將把註釋記錄在類文件中,但在運行時VM不需要保留註釋
RUNTIME: 編譯器將把註釋記錄在類文件中,在運行時VM將保留註釋,因此可以反射性的讀取
SOURCE:編譯器要丟棄的註釋
方法:
valueOf(String name);返回帶有指定名稱的該類型的指定常量
values();按照聲明的順序返回包含此枚舉類型常量的數組
異常類型
1.AnnotationTypeMismatchException:
若某個註釋的類型在對該註釋進行編譯或序列化後發生了更改,而程序試圖訪問該註釋的元素時,拋出此異常
方法:
element();返回類型不正確的元素的method對象
foundType();返回類型不正確的元素找到的數據類型
2.IncompleteAnnotationException:
若某個註釋在編譯或序列化之後,將某個註釋類型添加到其類型定義中,而程序試圖解析該註釋類型的元素時拋出此異常,如果新元素有默認值,則不拋出此異常
方法:
annotationType();返回帶有缺少元素的註釋類型的Class對象
elementName();返回缺少元素的名稱
錯誤類型:
AnnotationFormatError
當註釋解析器試圖從類文件讀取註釋並確定註釋出現異常時,拋出此錯誤
註解類型:(5個元註解)
1.Documented
指示某一類型的註釋將通過javadoc 和類似的默認工具進行文檔化.應使用此類型來這些類型文檔聲明,其註釋會影響由其客戶端註釋的元素的使用,如果類型聲明是用Documented 來註釋的,則其註釋將成爲註釋元素的公共api的一部分
2.Inherited
指示註釋類型被自動繼承,如果在註釋類型聲明中存在Inherited 元註釋,並且用戶在某一類聲明中查詢該註釋類型,同時該類聲明中沒有此類型的註釋,則將在該類的超類自動查詢該註釋類型,此過程會重複進行,直到找到該類型的註釋或到達該類層次的頂層爲止,如果沒有超類具有該類型的註釋,則查詢將指示當前類沒有這樣的註釋
注意,如果使用註釋類型註釋類以外的任何事物,此元註釋類型都是無效的,,還有注意,此元註釋,僅促成從超類繼承註釋,對以實現接口的註釋無效
3.Retention
指示註釋類型要註釋多久,如果註釋中不存在Retention註釋,則保留策略默認爲RetentionPolicy.CLASS
只有元註釋類型直接用於註釋時,Target元註釋纔有效,如果元註釋類型用作另一種註釋類型的成員,則無效
4.Target
指示註釋類型所適用的元素程序元素的種類,如果註釋類型聲明中不存在Target元註釋,則聲明的類型可以用在任一程序元素上,如果存在這樣的元註釋,則編譯器強制實施指定的使用限制