java四种元注解

在jdk1.5引进了注解的,有许多框架都使用了注解,例如spring,hibernate.现将其简单介绍一下
元注解:注解的注解,即java为注解开发特准备的注解。
在java中有四种元注解

1.@Target

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    ElementType[] value();
}

表示该注解用于什么地方

public enum ElementType {
    /** 类,接口(包括注解类型)或enum声明  */
    TYPE,

    /** 域声明(包括 enum 实例) */
    FIELD,

    /** 方法声明 */
    METHOD,

    /** 参数声明 */
    PARAMETER,

    /** 构造器声明 */
    CONSTRUCTOR,

    /** 局部变量声明  */
    LOCAL_VARIABLE,

    /** Annotation type declaration */
    ANNOTATION_TYPE,

    /**  包声明  */
    PACKAGE,

    /**
     * 类型参数声明
     *
     * @since 1.8
     */
    TYPE_PARAMETER,

    /**
     * 类型的使用
     *
     * @since 1.8
     */
    TYPE_USE
}

2.@Retention

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {

    RetentionPolicy value();
}

表示该注解可以保存的范围

public enum RetentionPolicy {
    /**
     * 源代码:即此注解只能保存在源代码中
     * 当编译时,会被丢弃
     */
    SOURCE,

   /**
     * class文件:即此注解可以在class文件中保留
     * 但会被jvm丢弃
     */
    CLASS,

   /**
     * 运行期:即此注解可以在运行时保留
     * 可以通过反、反射获得
     */
    RUNTIME
}

3.@Documented

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Documented {
}

即拥有这个注解的元素可以被javadoc此类的工具文档化。它代表着此注解会被javadoc工具提取成文档。在doc文档中的内容会因为此注解的信息内容不同而不同。相当与@return,@param 等。

4.@Inherited

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Inherited {
}

允许子类继承父类中的注解。即拥有此注解的元素其子类可以继承父类的注解。

猜你喜欢

转载自blog.csdn.net/guo_guo_cai/article/details/80734779