註解的作用:
- 編寫文件:通過程式碼裡標識的後設資料生成文件
- 程式碼分析:通過程式碼裡標識的後設資料對程式碼進行分析
- 編譯檢查:通過程式碼裡標識的後設資料讓編譯器能實現基本的編譯檢查
元註解: 元註解: 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的子類。