Java 注解 @Target、@Retention、@Documented、@Inherited

import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Ann{
    String value() default "";
}

@Target 注解:指明了修饰的这个注解的使用范围,即被描述的注解可以用在哪里。

ElementType 的取值:

    -  TYPE:类,接口或者枚举;

    -  FIELD:域,包含枚举常量;

    -  METHOD:方法;

    -  PARAMETER:参数;

    -  CONSTRUCTOR:构造方法;

    -  LOCAL_VARIABLE:局部变量;

    -  ANNOTATION_TYPE:注解类型;

    -  PACKAGE:包;

 

@Retention 注解:指明修饰的注解的生存周期,即会保留到哪个阶段。

RetentionPolicy 的取值:

    -  SOURCE:源码级别保留,编译后即丢弃。

    -  CLASS:编译级别保留,编译后的class文件中存在,在jvm运行时丢弃,这是默认值。

​​​​​​​    -  RUNTIME:运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用。

 

@Documented 注解:指明修饰的注解,可以被例如javadoc此类的工具文档化,只负责标记,没有成员取值。

 

@Inherited注解:允许子类继承父类中的注解。

 

@interface:声明一个注解,方法名对应参数名,返回值类型对应参数类型。

 

你可能感兴趣的:(Java)