谈谈你对反射机制的理解

  • Post author:
  • Post category:其他


首先反射拥有四大功能


  1. 在运行时获知任何一个对象所处的类。

  2. 在运行时构造任意一个类的对象。

  3. 在运行时获知一个类所有的成员变量和方法。

  4. 在运行时调用任意一个类的属性和方法。



这种动态的获取信息这种行为就叫做反射机制


反射的具体原理


在通常情况下一定是先有类,然后才能new对象。jvm将我们的代码编译成一个.class的字节码文件,然后被类加载器加载到jvm内存中,同时创建这个类的class对象放到堆内存当中,jvm在创建这个类的对象之前会先检查这个类是否被加载,并且寻找这个类的class对象,如果已经加载好,就会对它分配内存,然后初始化new操作。这是jvm加载一个类的过程,那么在加载完这个类后,堆内存的方法区中就产生了一个Class对象,并且包含了这个类的完整的结构信息,我们通过这个Class对象可以看到类的结构,这样就称为反射



获取Class对象的三种方式


通过调用某个对象的getClass()方法,就可以知道这个类的完整属性,就找到了这个对象所处的类,还有两种获取Class对象的方法一是调用某个类的Class属性来获取类对应的Class对象,还有一种是使用Class类中的forName()静态方法

反射机制优缺点

优点:比较灵活,可以在运行时动态的获取信息

缺点:破坏了封装性,因为反射可以获取类的私有方法和对象


反射机制的实际应用:

1.动态代理机制当中

2.使用jdbc连接数据库时

3.spring框架中的动态代理机制



版权声明:本文为loveforever__原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。