什麼是Java 註解?綠帽子瞭解一下
什麼是Java註解?這個問題打自從第一天接觸到Java註解以來,也是一直困擾著我。什麼是註解?註解能做什麼?
註解在生活中的理解
通過生活中的例子舉例,來讓大家對註解這個詞能夠更加深刻的記住它。下面兩個例子比較貼切的說明下註解:
- 例子一:標籤
在超市裡面,你會在貨架上多多少少的看到有標籤的痕跡,有的貨架上貼著:糧油、洗髮水、水果、大米
等等。這些標籤就是註解,在不影響貨物的同時,能讓顧客更好的找到商品,有的標籤如:國慶優惠三天、元旦2折起
這些標籤說明了某類商品的生命週期。這算是註解的一個比較接近生活中貼切的例子了。 - 例子二:綠帽子
舉綠帽子這個事,是為了讓大家更印象深刻的理解註解
可能上面兩個例子舉得並不是很貼切,小白初學,請大神輕噴。不過註解怎麼來的,就好比你為什麼叫這個名字一樣。在Java中註解就是:
Annotation
也叫元資料
正式瞭解Java註解
定義:註解(Annotation),也叫元資料。一種程式碼級別的說明。它是JDK1.5及以後版本引入的一個特性,與類、介面、列舉是在同一個層次。它可以宣告在包、類、欄位、方法、區域性變數、方法引數等的前面,用來對這些元素進行說明,註釋。
作用分類:
①編寫文件:通過程式碼裡標識的元資料生成文件【生成文件doc文件】
② 程式碼分析:通過程式碼裡標識的元資料對程式碼進行分析【使用反射】
③編譯檢查:通過程式碼裡標識的元資料讓編譯器能夠實現基本的編譯檢查【Override】
java註解的編寫格式: interface 前加一個**@**就是註解了,如下:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
Java 元註解
在jdk1.5的時候,提供了四種元註解,在java.lang.annotation
@Documented –註解是否將包含在JavaDoc中
@Retention –什麼時候使用該註解
@Target? –註解用於什麼地方
@Inherited – 是否允許子類繼承該註解
@Documented–一個簡單的Annotations標記註解,表示是否將註解資訊新增在java文件中。
@Retention– 定義該註解的生命週期。
RetentionPolicy.SOURCE – 在編譯階段丟棄。這些註解在編譯結束之後就不再有任何意義,所以它們不會寫入位元組碼。
@Override, @SuppressWarnings都屬於這類註解。
RetentionPolicy.CLASS – 在類載入的時候丟棄。在位元組碼檔案的處理中有用。註解預設使用這種方式。
RetentionPolicy.RUNTIME– 始終不會丟棄,執行期也保留該註解,因此可以使用反射機制讀取該註解的資訊。
我們自定義的註解通常使用這種方式。
@Target – 表示該註解用於什麼地方。如果不明確指出,該註解可以放在任何地方。以下是一些可用的引數。需要說明的是:屬性的註解是相容的,如果你想給7個屬性都添加註解,僅僅排除一個屬性,那麼你需要在定義target包含所有的屬性。
public enum ElementType {
/**標明該註解可以用於類、介面(包括註解型別)或enum宣告*/
TYPE,
/** 標明該註解可以用於欄位(域)宣告,包括enum例項 */
FIELD,
/** 標明該註解可以用於方法宣告 */
METHOD,
/** 標明該註解可以用於引數宣告 */
PARAMETER,
/** 標明註解可以用於建構函式宣告 */
CONSTRUCTOR,
/** 標明註解可以用於區域性變數宣告 */
LOCAL_VARIABLE,
/** 標明註解可以用於註解宣告(應用於另一個註解上)*/
ANNOTATION_TYPE,
/** 標明註解可以用於包宣告 */
PACKAGE,
/**
* 標明註解可以用於型別引數宣告(1.8新加入)
* @since 1.8
*/
TYPE_PARAMETER,
/**
* 型別使用宣告(1.8新加入)
* @since 1.8
*/
TYPE_USE
}
@Inherited – 定義該註釋和子類的關係
註解支援的資料型別
關於註解支援的元素資料型別除了上述的String,還支援如下資料型別
所有基本型別(int,float,boolean,byte,double,char,long,short)
String
Class
enum
Annotation
上述型別的陣列
部分引用:
https://blog.csdn.net/javazejian/article/details/71860633
https://baike.baidu.com/item/Java 註解/4404368?fr=aladdin
http://www.importnew.com/10294.html
個人網站:http://xudailong.cc
關注「蛇崽網盤教程資源」公眾號 ,在微信後臺回覆「領取資源」,獲取IT資源200G乾貨大全。
更多資源請訪問:
https://blog.csdn.net/xudailong_blog/article/details/78762262
某課視訊教程
https://xudailong.cc/2018/09/30/muke-courses/
關注「蛇崽網盤教程資源」公眾號 ,在微信後臺回覆「領取資源」,獲取IT資源200G乾貨大全。
在微信後臺回覆「130個小程式」,即可免費領取享有匯入就能跑的微信小程式