反射、注解、动态代理的理解

反射

  • 反射的核心就是拿到了.java编译后的.class文件。通过一系列的API,可以拿到该类中的成员:构造器、属性、方法等。

注解

  • 注解,可以告诉编译器或者JVM做一些事情。比如说重写的@Override注解,可以让编译器检查重写是否正确。

  • 注解的解析,这个就也用到了反射的知识。注解加在了哪个成员上,就先通过反射拿到这个对象。比如说注解加在Method上面,就拿到这个Method对象,再通过API去解析该注解中的值。

  • 注解的元注解@Retention

    • runtime:直到运行该程序,该注解也会被保存。表示代码运行(被JVM虚拟机加载class文件)时,该注解仍然存在于它所加的地方
    • class:保存到.java文件被编译成.class文件。.class文件被jvm运行时,该注解就失效
    • source:只保存于.java文件中,当.java文件被编译成.class文件时,注解就失效

还有一个就是动态代理。被代理类一般是接口的实现类,通过代理,生成代理类。代理类对象具有被代理类的所有方法,并且可以给方法进行增强。

posted @ 2022-09-28 16:07  pzistart  阅读(30)  评论(0编辑  收藏  举报