Java 注釋類之常用元注解


Java 注釋類之常用元注解

自定義Java注釋類時,我們使用方式如下:

 
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
class @interface Author{
  publicString name();
  publicString company();
}

這次我們重點討論修飾注解的注解,也就是我們說的元注解。


 

@Retention

注解@Retention可以用來修飾注解,是注解的注解,稱為元注解

Retention注解有一個屬性value,是RetentionPolicy類型的,Enum RetentionPolicy是一個枚舉類型, 
這個枚舉決定了Retention注解應該如何去保持,也可理解為Rentention 搭配 RententionPolicy使用。

RetentionPolicy有3個值:CLASS,RUNTIME,SOURCE

  • 用@Retention(RetentionPolicy.CLASS)修飾的注解,表示注解的信息被保留在class文件(字節碼文件)中當程序編譯時,但不會被虛擬機讀取在運行的時候;
  • 用@Retention(RetentionPolicy.SOURCE )修飾的注解,表示注解的信息會被編譯器拋棄,不會留在class文件中,注解的信息只會留在源文件中;
  • 用@Retention(RetentionPolicy.RUNTIME )修飾的注解,表示注解的信息被保留在class文件(字節碼文件)中當程序編譯時,會被虛擬機保留在運行時, 
    所以他們可以用反射的方式讀取。

RetentionPolicy.RUNTIME 可以讓你從JVM中讀取Annotation注解的信息,以便在分析程序的時候使用.


 

@Target

注解@Target也是用來修飾注解的元注解。

它有一個屬性ElementType也是枚舉類型,值為:ANNOTATION_TYPE,CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,PACKAGE,PARAMETER,TYPE

如@Target(ElementType.METHOD) 修飾的注解表示該注解只能用來修飾在方法上。 
其他同理。

Written with WENHAO.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM