JDK 5 供給的注解:Target、Inherited和Documented的差別。本站提示廣大學習愛好者:(JDK 5 供給的注解:Target、Inherited和Documented的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是JDK 5 供給的注解:Target、Inherited和Documented的差別正文
JDK 5供給的注解,除Retention之外,還有別的三個,即Target 、Inherited 和 Documented。
Target 目的即Target注解用在哪裡, 界說了注解應用的機會,即注解所實用的法式元素的品種。假如注解類型聲明中不存在 Target 元注解,則聲明的類型可以用在任一法式元素上。假如存在如許的元注解,則編譯器強迫實行指定的應用限制。
Target 界說以下:
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Target { ElementType[] value(); }
可以看到,Target 只要一個value屬性,類型為列舉類型ElementType。ElementType 聲明以下:
public enum ElementType { /** 注解可以用在類、接口(包含注解類型)或列舉聲明 */ TYPE, /** 字段聲明(包含列舉常量) */ FIELD, /** 辦法聲明 */ METHOD, /** 參數聲明 */ PARAMETER, /** 結構辦法聲明 */ CONSTRUCTOR, /** 部分變量聲明 */ LOCAL_VARIABLE, /** 注解類型聲明 */ ANNOTATION_TYPE, /** 包聲明 */ PACKAGE }
Documented注解注解制造javadoc時,能否將注解信息參加文檔。假如注解在聲明時應用了@Documented,則在制造javadoc時注解信息會參加javadoc。注解聲明以下:
@Documented @Retention(value=RUNTIME) @Target(value=ANNOTATION_TYPE)//解釋該注解只能在聲明注解時應用,即元注解 public @interface Documented {}
Inherited 注解異樣是元注解,聲明以下:
@Documented @Retention(value=RUNTIME) @Target(value=ANNOTATION_TYPE) public @interface Inherited {}
Inherited 注解注解注解能否會被子類繼續,缺省情形是不繼續的。當注解在聲明時,應用了@Inherited注解,則該注解會被應用了該注解的類的子類所繼續。