1. 程式人生 > >JAVA中如何定義自定義註解

JAVA中如何定義自定義註解

name 成員 ons javaoop override dep 擁有 ride 不能

了解註解

註解是Java1.5,JDK5.0引用的技術,與類,接口,枚舉處於同一層次 。它可以聲明在包、類、字段、方法、局部變量、方法參數等的前面,用來對這些元素進行說明,註釋 。

在Java中,自帶了三種註解,這三種註解存在於java.lang包中,首先我們講一講這些註解

  • Override——它的作用是對覆蓋超類中方法的方法進行標記,如果被標記的類並沒有實際覆蓋超類,則編譯器會發出錯誤警告。
    很常見的一個註解,了解JavaOOP的小夥伴這個註解應該較為常用,告訴編譯器,我這個方法是重寫了父類方法,當然如果你的方法並沒有實際重寫父類方法時,那麽編譯器就會顯示警告信息
  • Deprecated——它的作用是對不應該再使用的方法添加註解,當編程人員使用這些方法時,將會在編譯時顯示提示信息

    當一個方法名或者類名上面此註解之後,編譯器會認為這個方法屬於過期方法,明顯的區別在於類名或者方法名上會畫一道刪除線,標識過期方法不影響方法的繼續使用
  • SuppressWarnings——這個僅僅是告訴編譯器忽略特定的警告信息,例如在泛型中使用原生數據類型
    例如我們在使用一些以Deprecated註解的方法時,編譯器會提出黃線警告,那麽只要在使用的地方加上@SuppressWarnings(“deprecation”)就可以使編譯器忽略這個警告
    此註釋常用的參數值有 : deprecation(忽略使用過時類或者方法),unchecked(忽略執行了未檢查裝換時警告) , fallthrough(忽略switch直接指向到下一個case塊沒有break警告),path(忽略類路徑,源文件路徑中有不存在路徑時警告),serial(忽略可序列化類中沒有serialVersionUID時的警告),finally(任何finally不能正常執行時的警告),all(以上所有)

自定義註解須知

首先,自定義註解我們必須了解四個元註解,什麽是元註解?元註解指作用於註解之上的元數據或者元信息,簡單通俗的講,元註解就是註解的註解 .

  • Documented——指明擁有這個註解的元素可以被javadoc此類的工具文檔化。這種類型應該用於註解那些影響客戶使用帶註釋的元素聲明的類型。如果一種聲明使用Documented進行註解,這種類型的註解被作為被標註的程序成員的公共API 。
  • Inherited——指明該註解類型被自動繼承。如果用戶在當前類中查詢這個元註解類型並且當前類的聲明中不包含這個元註解類型,那麽也將自動查詢當前類的父類是否存在Inherited元註解,這個動作將被重復執行知道這個標註類型被找到,或者是查詢到頂層的父類。
  • Retention——指明在什麽級別顯示此註解
  • Target——指明該類型的註解可以註解的程序元素的範圍

Documented與Inherited是典型的標識性註解,也就是說在註解內部並沒有成員變量,沒有成員變量的註解稱為標識註解
Target主要的參數類型包括以下幾種

  • ElementType.TYPE 用於類,接口,枚舉但不能是註解
  • ElementType.FIELD 作用於字段,包含枚舉值
  • ElementType.METHOD 作用於方法,不包含構造方法
  • ElementType.PARAMETER 作用於方法的參數
  • ElementType.CONSTRUCTOR 作用於構造方法
  • ElementType.LOCAL_VERIABLE 作用於本地變量或者catch語句
  • ElementType.ANNOTATION_TYPE 作用於註解
  • ElementType.PACKAGE 作用於包

Retention主要的參數類型包括以下幾種

  1. RetentionPolicy.SOURCE 註解存在於源代碼中,編譯時會被拋棄
  2. RetentionPolicy.CLASS 註解會被編譯到class文件中,但是JVM會忽略
  3. RetentionPolicy.RUNTIME JVM會讀取註解,同時會保存到class文件中

自定義註解

註解的定義

註解中可以定義的數據類型是受到限制的,除了基本類型之外,String,Enums,Annotation,Class以及這些類型的數組

註解的使用

註解的解析

JAVA中如何定義自定義註解