美文网首页
Java注解源码分析

Java注解源码分析

作者: kingdompeak | 来源:发表于2019-03-06 13:01 被阅读0次

    注解的本质:所有的注解类型都继承自这个普通的接口(Annotation)

    如@Override

    public interface Override extends Annotation{}

    Annotation.java

    注解本质上是继承了 Annotation 接口的接口,而当你通过反射,也就是我们这里的 getAnnotation 方法去获取一个注解类实例的时候,其实 JDK 是通过动态代理机制生成一个实现我们注解(接口)的代理类。分析下是如何使用动态代理的:

    Test Method.getAnnotation()

    super.getAnnotation(var1);调用父类Executable的getAnnotation()方法,其中declaredAnnotations()返回的是Map,

    Executable.getAnnotation() Executable.declaredAnnotations() AnnotationParser.parseAnnotations() AnnotationParser.parseAnnotations2() AnnotationParser.parseAnnotation2() AnnotationParser.parseAnnotation2()接上张图     AnnotationParser.annotationForMap()

    至此,通过动态代理机制生成一个实现我们注解(接口)的代理类

    反编译生成:

    相关文章

      网友评论

          本文标题:Java注解源码分析

          本文链接:https://www.haomeiwen.com/subject/woazuqtx.html