1. 程式人生 > 其它 >註解與反射01——註解基礎

註解與反射01——註解基礎

註解與反射01——註解基礎

Java Annotation

註解入門

什麼是註解

  • Annotation是從JDK5.0開始引入的新技術.
  • Annotation的作用:
    • 不是程式本身,可以對程式作出解釋,(這一點和註釋(comment)沒什麼區別)
    • 可以被其他程式(比如:編譯器等)讀取.
  • Annotation的格式:
    • 註解是以"@註釋名"在程式碼中存在的,還可以新增一些引數值,例如:@SuppressWamings(value="unchecked").
  • Annotation在哪裡使用?
    • 可以附加在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: 說明子類可以繼承父類中的該註解

列舉型別,num

自定義註解

  • 使用@interface自定義註解時,自動繼承了java.lang.annotation.Annotation介面

  • 分析:

    • @interface用來宣告一個註解 ,格式: public @ interface註解名{定義內容}

    (如果在類裡面宣告,需要把public去掉)

    • 其中的每一個方法實際 上是聲明瞭一-個配置引數.
    • 方法的名稱就是引數的名稱.
    • 返回值型別就是引數的型別(返回值只能是基本型別,Class , String , enum ).
    • 可以通過default來宣告引數的預設值
    • 如果只有一個引數成員, 一般引數名為value
    • 註解元素必須要有值,我們定義註解元素時,經常使用空字串,0作為預設值.且註解沒有順序

PS:註解可以顯示賦值,如果沒有預設值,我們就必須給註解賦值

indexof 如果找不到就返回-1

當只有一個值的時候,只有一個值的時候我們建議用value命名,然後再上面使用該註解時,可以省略這個value

定義:

使用: