1. 程式人生 > 實用技巧 >【JAVA基礎】註解

【JAVA基礎】註解

1. 註解的基本概念

1.1. 註解(Annotation)又叫標註,是從Java5開始增加的一種引用資料型別。

1.2. 註解本質上就是程式碼中的特殊標記,通過這些標記可以在編譯、類載入、 以及執行時執行指定的處理。

2. 註解的語法格式

2.1.訪問修飾符 @interface 註解名稱 { 註解成員};

2.2. 自定義註解自動繼承java.lang.annotation.Annotation介面。

2.3. 通過@註解名稱的方式可以修飾包、類、 成員方法、成員變數、構造方 法、引數、區域性變數的宣告等。

3. 註解的使用方式

3.1. 註解體中只有成員變數沒有成員方法,而註解的成員變數以“無形參的方 法”形式來宣告,其方法名定義了該成員變數的名字,其返回值定義了該成員變數的型別。

3.2. 如果註解只有一個引數成員,建議使用引數名為value,而型別只能是八 種基本資料型別、String型別、Class型別、enum型別及Annotation型別。

4. 元註解的概念

4.1. 元註解是可以註解到註解上的註解,或者說元註解是一種基本註解,但 是它能夠應用到其它的註解上面。

4.2. 元註解主要有 @Retention、@Documented、@Target、@Inherited、 @Repeatable。

5. 元註解

5.1 @Retention

  @Retention 應用到一個註解上用於說明該註解的的生命週期,取值如下

5.1.1.RetentionPolicy.SOURCE 註解只在原始碼階段保留,在編譯器進行編譯時 它將被丟棄忽視。

5.1.2. RetentionPolicy.CLASS 註解只被保留到編譯進行的時候,它並不會被加 載到 JVM 中,預設方式。

5.1.3. RetentionPolicy.RUNTIME 註解可以保留到程式執行的時候,它會被載入 進入到 JVM 中,所以在程式執行時可以獲取到它們。

5.2.元註解@Documented

5.2.1. 使用javadoc工具可以從程式原始碼中抽取類、方法、成員等註釋形成一個和原始碼配套的API幫助文件,而該工具抽取時預設不包括註解內容。

5.2.2. @Documented用於指定被該註解將被javadoc工具提取成文件。

5.2.3. 定義為@Documented的註解必須設定Retention值為RUNTIME。

5.3. 元註解@Target

  @Target用於指定被修飾的註解能用於哪些元素的修飾,取值如下

ElementType.ANNOTATION_TYPE

可以給一個註解進行註解

ElementType.CONSTRUCTOR

可以給構造方法進行註解

ElementType.FIELD

可以給屬性進行註解

ElementType.LOCAL_VARIABLE

可以給區域性變數進行註解

ElementType.METHOD

可以給方法進行註解

ElementType.PACKAGE

可以給一個包進行註解

ElementType.PARAMETER

可以給一個方法內的引數進行註解

ElementType.TYPE

可以給型別進行註解,比如類、介面、列舉

5.4. 元註解@Inherited

  @Inherited並不是說註解本身可以繼承,而是說如果一個超類被該註解標 記過的註解進行註解時,如果子類沒有被任何註解應用時,則子類就繼 承超類的註解。

5.5. 元註解@Repeatable

5.5.1. @Repeatable表示自然可重複的含義,從Java8開始增加的新特性。

5.5.2. 從Java8開始對元註解@Target的引數型別ElementType列舉值增加了兩個

  其中ElementType.TYPE_PARAMETER 表示該註解能寫在型別變數的宣告 語句中,如:泛型。

  其中ElementType.TYPE_USE 表示該註解能寫在使用型別的任何語句中

6. 常見的預製註解

6.1. 預製註解就是Java語言自身提供的註解,具體如下

@author

標明開發該類模組的作者,多個作者之間使用,分割

@version

標明該類模組的版本

@see

參考轉向,也就是相關主題

@since

從哪個版本開始增加的

@param

對方法中某引數的說明,如果沒有引數就不能寫

@return

對方法返回值的說明,如果方法的返回值型別是void就 不能寫

@exception

對方法可能丟擲的異常進行說明

6.2. 常見的預製註解

@Override

限定重寫父類方法, 該註解只能用於方法

@Deprecated

用於表示所修飾的元素(類, 方法等)已過時

@SuppressWarnings

抑制編譯器警告