註解與反射01——註解基礎
阿新 • • 發佈:2022-04-02
註解與反射01——註解基礎
Java Annotation
註解入門
什麼是註解
- Annotation是從JDK5.0開始引入的新技術.
- Annotation的作用:
- 不是程式本身,可以對程式作出解釋,(這一點和註釋(comment)沒什麼區別)
- 可以被其他程式(比如:編譯器等)讀取.
- Annotation的格式:
- 註解是以"@註釋名"在程式碼中存在的,還可以新增一些引數值,例如:@SuppressWamings(value="unchecked").
- Annotation在哪裡使用?
- 可以附加在package . class , method , field等上面,相當於給他們添加了額外的輔助資訊
我們可以通過反射機制程式設計實現對這些元資料的訪問
- 可以附加在package . class , method , field等上面,相當於給他們添加了額外的輔助資訊
內建註解
- @Override :定義在java.lang.Override中,此註釋只適用於修辭方法. 表示-個方法宣告打算重寫超類中的另-一個方法宣告
- @Deprecated :定義在java.lang.Deprecated中,此註釋可以用於修辭方法,屬性,類,表示不鼓勵程式設計師使用這樣的元素,通常是因為它很危險或者存在更好的選擇
PS:Java中加上static就可以直接呼叫該方法!
- @SuppressWarnings (鎮壓警告):定義在java.lang.SuppressWarnings中,用來抑制編譯時的警告資訊.
- 與前兩個註釋有所不同你需要新增一個引數才能正確使用,這些引數都是已經定義好了的,我們選擇性的使用就好了.
- @SuppressWarnings("ll")
- @SuppressWarnings("unchecked")
- @SuppressWarnings(value={"unchecked","deprecation"})
- 等等...
- 與前兩個註釋有所不同你需要新增一個引數才能正確使用,這些引數都是已經定義好了的,我們選擇性的使用就好了.
使用前:
使用後(放在方法上):
使用後(放在類上):
SuppressWarnings原始碼:
元註解
- 元註解的作用就是負責註解其他註解, Java定義了4個標準的meta-annotation型別他們被用來提供對其他annotation型別作說明.
- 這些型別和它們所支援的類在java.lang.annotation包中可以找到.( @Target,@Retention ,@Documented ,@Inherited )
- @Target
- @Retention:表示需要在什麼級別儲存該註釋資訊,用於描述註解的生命週期
- (SOURCE< CL ASS < RUNTIME)
- @Document:說明該註解將被包含在javadoc中
- @Inherited: 說明子類可以繼承父類中的該註解
- @Target
列舉型別,num
自定義註解
-
使用@interface自定義註解時,自動繼承了java.lang.annotation.Annotation介面
-
分析:
- @interface用來宣告一個註解 ,格式: public @ interface註解名{定義內容}
(如果在類裡面宣告,需要把public去掉)
- 其中的每一個方法實際 上是聲明瞭一-個配置引數.
- 方法的名稱就是引數的名稱.
- 返回值型別就是引數的型別(返回值只能是基本型別,Class , String , enum ).
- 可以通過default來宣告引數的預設值
- 如果只有一個引數成員, 一般引數名為value
- 註解元素必須要有值,我們定義註解元素時,經常使用空字串,0作為預設值.且註解沒有順序
PS:註解可以顯示賦值,如果沒有預設值,我們就必須給註解賦值
indexof 如果找不到就返回-1
當只有一個值的時候,只有一個值的時候我們建議用value命名,然後再上面使用該註解時,可以省略這個value
定義:
使用: