自定義註解 @Target @Retention 引數含義
阿新 • • 發佈:2018-11-28
示例:
@Target(value = {ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
long time() default 2L;
}
@Target 註解
功能:指明瞭修飾的這個註解的使用範圍,即被描述的註解可以用在哪裡。
ElementType的取值包含以下幾種:
ElementType.TYPE //類,介面或者列舉 ElementType.FIELD //域,包含列舉常量 ElementType.METHOD //方法 ElementType.PARAMETER //引數 ElementType.CONSTRUCTOR //構造方法 ElementType.LOCAL_VARIABLE //區域性變數 ElementType.ANNOTATION_TYPE //註解型別 ElementType.PACKAGE //包 ElementType.TYPE_PARAMETER //型別引數宣告(1.8) ElementType.TYPE_USE //使用型別(1.8)
@Retention 註解
功能:指明修飾的註解的生存週期,即會保留到哪個階段。
RetentionPolicy的取值包含以下三種:
RetentionPolicy.SOURCE //原始碼級別保留,編譯後即丟棄。
RetentionPolicy.CLASS //編譯級別保留,編譯後的class檔案中存在,在jvm執行時丟棄,這是預設值。
RetentionPolicy.RUNTIME // 執行級別保留,編譯後的class檔案中存在,在jvm執行時保留,可以被反射呼叫。
@Documented 註解
功能:指明修飾的註解,可以被例如javadoc此類的工具文件化,只負責標記,沒有成員取值。
@Inherited註解
功能:允許子類繼承父類中的註解。