JAVA 註解 Annontation

❀卜卜ღ?Bruce發表於2019-03-12

註解的作用:

  1. 編寫文件:通過程式碼裡標識的後設資料生成文件  
  2. 程式碼分析:通過程式碼裡標識的後設資料對程式碼進行分析  
  3. 編譯檢查:通過程式碼裡標識的後設資料讓編譯器能實現基本的編譯檢查

元註解: 元註解: java.lang.annotation提供了四種元註解,專門註解其他的註解(在自定義註解的時候,需要使用到元註解):

  • @Documented –註解是否將包含在JavaDoc中
  • @Retention –什麼時候使用該註解
  • @Target –註解用於什麼地方
  • @Inherited – 是否允許子類繼承該註解

1.)@Retention– 定義該註解的生命週期

  • RetentionPolicy.SOURCE : 在編譯階段丟棄。這些註解在編譯結束之後就不再有任何意義,所以它們不會寫入位元組碼。@Override, @SuppressWarnings都屬於這類註解。
  • RetentionPolicy.CLASS : 在類載入的時候丟棄。在位元組碼檔案的處理中有用。註解預設使用這種方式
  • RetentionPolicy.RUNTIME : 始終不會丟棄,執行期也保留該註解,因此可以使用反射機制讀取該註解的資訊。我們自定義的註解通常使用這種方式。

2.)Target – 表示該註解用於什麼地方。預設值為任何元素,表示該註解用於什麼地方。可用的ElementType引數包括

  • ElementType.CONSTRUCTOR:用於描述構造器
  • ElementType.FIELD:成員變數、物件、屬性(包括enum例項)
  • ElementType.LOCAL_VARIABLE:用於描述區域性變數
  • ElementType.METHOD:用於描述方法
  • ElementType.PACKAGE:用於描述包
  • ElementType.PARAMETER:用於描述引數
  • ElementType.TYPE:用於描述類、介面(包括註解型別) 或enum宣告

3.)@Documented–一個簡單的Annotations標記註解,表示是否將註解資訊新增在java文件中。

4.)@Inherited – 定義該註釋和子類的關係

  • @Inherited 元註解是一個標記註解,@Inherited闡述了某個被標註的型別是被繼承的。如果一個使用了@Inherited修飾的annotation型別被用於一個class,則這個annotation將被用於該class的子類。