引入
注解:Annotation,也叫元数据
什么是注解:
个人理解:特殊标记,
这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。
也就是说:我们通过注解,可以实现在不改变原有逻辑的情况下,在源文件中嵌入一些数据
框架 = 注解 + 反射 + 设计模式
元注解
用来修饰其他注解的注解(四种:Retention,Target,Documented,Inherited)
@Retention:指定修饰注解的生命周期
包含一个RetentionPolicy枚举类型的成员变量,使用@Rentention时必须为该value成员变量指定值:
RetentionPolicy.SOURCE:在源文件中有效,编译器直接丢弃这种策略的注释,在.class文件中不会保留注解信息
RetentionPolicy.CLASS:在class文件中有效,保留在.class文件中,但是当运行Java程序时,他就不会继续加载了,不会保留在内存中,JVM不会保留注解。如果注解没有加Retention元注解,那么相当于默认的注解就是这种状态。
RetentionPolicy.RUNTIME:在运行时有效,当运行 Java程序时,JVM会保留注释,加载在内存中了,那么程序可以通过反射获取该注释。
@Target:用来指定被修饰的注解能用来修饰哪些程序元素
包含一个名为value的成员变量
ANNOTATION_TYPE
:注解类型声明。CONSTRUCTOR
:构造器声明。FIELD
:字段声明(包括枚举常量)。LOCAL_VARIABLE
:局部变量声明。METHOD
:方法声明。PACKAGE
:包声明。PARAMETER
:参数声明。TYPE
:类、接口(包括注解类型)或枚举声明
@Documented:用于指定被该元注解修饰的注解类将被javadoc工具提取成文档
默认情况下,javadoc是 不包括注解的,但是加上了这个注解生成的文档中就会带着注解了
@Inherited:被他修饰的注解将具有继承性。
如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解。