Java注解

来源:互联网 发布:淘宝cos店便宜 编辑:程序博客网 时间:2024/06/03 21:35

注解可分为三类:JAVA自带的标准注解、元注解,可用于定义注解的注解、自定义注解。

字节码文件的属性表集合中有一个RunTimeVisiableAnnotations、RunTimeInvisiableAnnotations等属性,这些属性会根据注解的作用域添加到字段表、方法表、类上。JVM加载字节码文件后,就会将这些属性保存到class对象中。

注解的本质是一个继承了Annotation接口的接口,JDK通过动态代理生成代理对象,通过它的value()方法就可以获取到注解值。

Annotation接口是所有注解(接口)的父接口,可以为程序元素(类、方法、成员变量)设置元数据。注解的具体实现类是Java运行时生成的动态代理类。代理类调用注解的方法时,会最终调用AnnotationInvocationHandler的invoke()方法(AnnotationInvocationHandler是InvocationHandler接口的具体实现类)。该方法可以从Java常量池的memberValues对象中获取注解方法的返回值。