Java註解原理

1. @interface不是接口是註解類,使用@interface自定義註解時,自動繼承了java.lang.annotation.Annotation接口,由編譯程序自動完成其餘細節java

2. @interface用來聲明一個註解,其中的每個方法其實是聲明瞭一個配置參數。方法的名稱就是參數的名稱,返回值類型就是參數的類型(返回值類型只能是基本類型、Class、String、enum)。能夠經過default來聲明參數的默認值繼承

3. 用@Retention(RetentionPolicy.CLASS)修飾的註解,表示註解的信息被保留在class文件(字節碼文件)中當程序編譯時,但不會被虛擬機讀取在運行的時候;
用@Retention(RetentionPolicy.SOURCE )修飾的註解,表示註解的信息會被編譯器拋棄,不會留在class文件中,註解的信息只會留在源文件中;
用@Retention(RetentionPolicy.RUNTIME )修飾的註解,表示註解的信息被保留在class文件(字節碼文件)中當程序編譯時,會被虛擬機保留在運行時接口

4. 1)編譯時註解,註解內容只存在源文件,在編譯期間將被丟棄,不能經過JVM獲取註解信息;
   2)運行時註解,編譯時被存儲在.class字節碼文件,能夠經過JVM運行時獲取註解信息(且只限於被RUNTIME註解的註解)。編譯器

5. 一個註解準確意義上來講,只不過是一種特殊的註釋而已,若是沒有解析它的代碼,它可能連註釋都不如虛擬機

相關文章
相關標籤/搜索