JAVA注解

一、@Target — —注解用于什么地方

ElementType.TYPE,//Class, interface (including annotation type), or enum declaration
ElementType.FIELD //Field declaration (includes enum constants)
ElementType.METHOD //Method declaration
ElementType.PARAMETER //Formal parameter declaration
ElementType.CONSTRUCTOR //Constructor declaration
ElementType.LOCAL_VARIABLE //Local variable declaration
ElementType.ANNOTATION_TYPE,//Annotation type declaration
ElementType.PACKAGE //Package declaration
ElementType.TYPE_PARAMETER //Type parameter declaration jdk 1.8
ElementType.TYPE_USE //Use of a type jdk 1.8

二、@Retention — —注解运行状态

     SOURCE, //源码状态运行,
     CLASS, //编译类文件时运行
     RUNTIME //运行时运行

1、SOURCE:注解将编译器丢弃(该类型的注解信息只会保留在源码里,源码经过编译后,注解信息会被丢弃,不会保留在编译好的class文件里)

2、CLASS:注解在class中可用,但会被VM丢弃(该类型的注解信息会保留在源码里和class文件里,在执行的时候,不会加载到虚拟机中(JVM)中)

3、RUNTIME:VM将在运行期也保留注解信息,因此可以通过反射机制读取注解信息(源码、class文件和执行的时候都有注解的信息)

三、@Documented — — 生成说明文档,添加类的解释

@Documented 文档化

四、@Inherited — —允许子类继承父类中的注解

1、允许子类继承父类的注解。
2、用于描述某个被标注的类型可被继承的,如果一个使用了@Inherited修饰的annotation类型类型被用于一个class,则这个annotation将被用于该class类的子类。
原文地址:https://www.cnblogs.com/tianma-0/p/13677751.html