Java註解

註解概念:

1、JDK5及其以後JDK版本開始支持Java註解;

2、Java註解(Annotation)也叫作元數據,以‘@註解名’在代碼中存在,它是一種在源代碼中標註的特殊標記,可以標註源代碼中的類、屬性、方法、參數等代碼,主要用於創建文檔,跟蹤代碼中的依賴性,甚至執行基本編譯時檢查。

Java註解按照是否含有參數分爲三種:

不帶參數,語法結構爲:@Annotation

帶一個參數的註解,語法結構爲:@Annotation(參數) 

 //也可@SuppressWarnings(value = "unused")(消除警告可以在方法外面也可以在類外部)

                   //也可@SuppressWarnings(value = { "unused", "deprecation" })

帶多個參數的註解,語法結構爲:@Annotiation(參數1, 參數2, 參數3...) 

內置註解:

@Override註解:

@Override被用於標註方法,用於說明所標註的方法是重寫父類的方法:

爲了支持@Override,需要將項目工程升級爲1.6或其以上版本;如果升級後Java代碼沒問題,但是工程報錯,可以通過如下操作解決:右鍵項目“Properties”——>“Project Facets”——>右邊java項選擇相應的版本就OK了。

@Deprecated註解

@Deprecated 用於說明所標註元素(成員變量或方法)因存在安全問題或有更好選擇而不鼓勵程序員使用,如果強行使用,則編譯器會發出警告。(通俗來說就是方法過時)

 

過時的方法可以使用但是不建議使用,此時我們要消除警告。因Date類中getHours()添加了@Deprecated註解,所以使用時出現了黃色波浪線。

@SuppressWarnings註解

@SuppressWarnings用於取消編譯器所顯示的警告,該註解常用屬性值如下:

deprecation:使用已被@Deprecated標註的程序元素;、

unused:程序含有未被使用的元素;

 

serial:在可序列化的類上缺少serialVersionUID定義;

自定義註釋:

註解語法結構:

[public] @interface 註解名 {   

 [屬性1;]   

 [屬性2;]   

 ...   

 [屬性n;] }

屬性語法結構:

數據類型 屬性名() [default 默認屬性值];

注意: 註解屬性默認沒有默認值,如果註解中定義了無默認值的註解屬性,則使用該註解時必須指定值:

如果註解屬性名爲value,使用該註解時可以直接賦值:

由於@SuppressWarnings註解內定義的註解屬性的屬性名爲value,所以賦值時可以省略“value=”。

如果註解屬性的數據類型爲數組類型,賦多個值時必須使用{}括起來;但若只賦一個值,則無需使用{}:

由於value註解屬性有多個值,所以賦值時必須使用{}將值括起來

value註解屬性只有一個值,所以賦值時無需使用{}將值括起來

元註解——@Target

Java提供了四個用於修飾自定義註解的元註解:@Target、@Retention 、@Documented和@Inherited

@Target:用於指定被修飾的自定義註解只能用於修飾程序中哪些元素,該元註解有如下屬性值: 

1、ElementType.FIELD:應用於全局屬性

2、ElementType.METHOD:應用於方法

3、ElementType.PARAMETER:應用於方法的參數

4、ElementType.TYPE:應用於類、接口或者枚舉聲明

元註解——@Target

限制自定義註解@Override只能用來標註方法。注意:由前面知識可知大括號可以去掉(因爲value賦值的時候可以省略)。

元註解——@Retention

@Retention:用於指定被修飾的自定義註解可以保留多久,該元註解有如下屬性值:

1、RetentionPolicy.SOURCE:編譯器將直接丟棄被修飾的註解。

2、RetentionPolicy.CLASS:默認值,編譯器將把註解記錄在class文件中,當運行Java程序時,虛擬機不再保留註解;

3、RetentionPolicy.RUNTIME:編譯器將把註解記錄在class文件中,當運行java程序時,虛擬機保留註解,程序可以通過反射獲取該註解;

 

 

元註解——@Documented

1、選中java工程鼠標右鍵點擊“Export…”,出現下圖:

 

2、在上圖紅框處輸入javadoc點擊“Next >”按鈕,出現下圖:

 

3、點擊“Finish”按鈕打開項目根目錄打開名爲doc的文件夾使用瀏覽器軟件(如Google)打開名爲index.html文件點擊 “Student”導航,在右側即可找到如下內容:

 

說明:如果@Documented元註解沒有修飾前面Override自定義註解,則生成的文檔不會有如上圖紅框框起的部分。

元註解——@Inherited

@Inherited:如果父類所使用的註解有@Inherited修飾,則子類可以繼承該註解,否則不能繼承。

 

Father類添加了由@Inherited元註釋所修飾的Bean自定義註解,所以有內容輸出;如果將@Inherited元註釋去掉,儘管Father類依然有Bean自定義註解,但卻沒有內容輸出。

 

 

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