1、@Retention
@Retention在定义注解的时候这个注解的作用是指出,这个注解实在哪个阶段生效的是在原码阶段,还是运行时候的阶段,还是在编译的阶段。
2、@Target
@Target这个注解的作用是指明当前定义的注解是作用在什么上面的是属性上面还是方法上面。
3、@Inherited
@Inherited注解的作用是当定义的注解被子类继承,注意,仅仅针对类和成员属性,而对于方法并不受这个注解的影响。
对于类来说,当子类要继承父类的时候注解需要被@Inherited标识
对于成员属性和方法来说,非重写的都会保持和父类一样的注解,而被实现的抽象方法,被重写的方法都不会有父类的注解。
4、@Documented
Documented注解表明这个注解是由 javadoc记录的,在默认情况下也有类似的记录工具。 如果一个类型声明被注解了文档化,它的注解成为公共API的一部分。