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注解,則該注解會被應用了該注解的類的子類所繼續。