java 註解 java.lang.annotation包結構

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元註釋,則聲明的類型可以用在任一程序元素上,如果存在這樣的元註釋,則編譯器強制實施指定的使用限制

5.Repeatable

可重複的意思,jdk1.8才加入,如果類型上加上Reteatable元註解,代表此類型的註解值可以同時取多個




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章