Java元注解

JDK从1.5开始提供注解,除了内置注解,还有4个元注解用了定义和解释注解

第一个 @Target

标志注解可以在那些地方可以使用

public enum ElementType {
    /** Class, interface (including annotation type), or enum declaration */
    TYPE,      //:用于描述类、接口(包括注解类型) 或enum声明

    /** Field declaration (includes enum constants) */
    FIELD,   //:用于描述域即类成员变量

    /** Method declaration */
    METHOD,//:用于描述方法

    /** Formal parameter declaration */
    PARAMETER,//:用于描述参数

    /** Constructor declaration */
    CONSTRUCTOR,//:用于描述构造器

    /** Local variable declaration */
    LOCAL_VARIABLE,://用于描述局部变量

    /** Annotation type declaration */
    ANNOTATION_TYPE,//:描述注释

    /** Package declaration */
    PACKAGE,//描述包

    /**
     * Type parameter declaration
     *
     * @since 1.8
     */
    TYPE_PARAMETER, //1.8版本开始,描述类、接口或enum参数的声明

    /**
     * Use of a type
     *
     * @since 1.8
     */
    TYPE_USE  //:1.8版本开始,描述一种类、接口或enum的使用声明
}

第二个:@Retention 

描述注解的生命周期,表示需要在什么级别保存该注解,即保留的时间长短。取值类型(RetentionPolicy)有以下几种:

  SOURCE:在源文件中有效(即源文件保留)
  CLASS:在class文件中有效(即class保留)
  RUNTIME:在运行时有效(即运行时保留)

第三个:@Documented
描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。它是一个标记注解,没有成员。

第四个:@Inherited

用于表示某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。





 

怕什么真理无穷,进一寸有一寸的欢喜!
原文地址:https://www.cnblogs.com/wyk96/p/13578080.html