1. @Target
Target設定註解使用範圍,通過ElementType來指定註解可使用範圍的枚舉集合 。
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
ElementType.ANNOTATION_TYPE表示註解在被@interface修飾的類型,否則報錯。
同理,常用的ElementType.METHOD表示註解在方法上,否則報錯。
ElementType用法
取值 | 註解使用範圍 |
TYPE | 類,接口上或者枚舉申明 |
FIELD | 字段申明和枚舉常量 |
METHOD | 方法 |
PARAMETER | 參數 |
CONSTRUCTOR | 構造方法 |
LOCAL_VARIABLE | 局部變量 |
ANNOTATION_TYPE | 註解類型上(被@interface修飾的類型) |
PACKAGE | 安裝包申明 |
TYPE_PARAMETER | 類型參數申明 |
TYPE_USE | 使用一種類型 |
2.@Documented
Documented註解表明這個註釋是由 javadoc記錄的。 如果一個類型聲明被註釋了文檔化,它的註釋成爲公共API的一部分。
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Documented {
3.@Retention
@Retention與RetentionPolicy這個枚舉類型的常量一起指定註釋要保留多長時間
RetentionPolicy描述保留註釋的各種策略
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
RetentionPolicy用法:
取值 | 解釋 |
SOURCE | 編譯器丟棄註釋 |
CLASS | 編譯器會記錄在文件中,默認運行時不需要虛擬機保留 |
RUNTIME | 編譯器記錄在文件中,由虛擬機運行時保留,便於讀取。 |