Java反射的作用与原理

定义

反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。在Java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。

这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。

应用场景

jdbc就是典型的反射

Class.forName('com.mysql.jdbc.Driver.class');//加载MySQL的驱动类

这就是反射。如hibernate,struts等框架使用反射实现的。

反射的原理

下图是类的正常加载过程,反射原理与class对象:

Class对象的由来是将class文件读入内存,并为之创建一个Class对象。

java反射机制性能 java反射机制的原理_反射机制

反射的优缺点

1. 优点:

(1)能够运行时动态获取类的实例,提高灵活性;

(2)与动态编译结合。

2. 缺点:

(1)反射会消耗一定的系统资源,因此,如果不需要动态地创建一个对象,那么就不需要用反射;

(2)反射调用方法时可以忽略权限检查,因此可能会破坏封装性而导致安全问题。

反射机制常用的类

  1. Java.lang.Class;
  2. Java.lang.reflect.Constructor;
  3. Java.lang.reflect.Field;
  4. Java.lang.reflect.Method;
  5. Java.lang.reflect.Modifier;