何为反射
反射是框架设计的灵魂。在运行时才通过类名动态的将class对象加载进内存,通过类的class对象就可以获取类的全部信息,包括方法,字段等。一般常用于框架设计中。
创建一个对象的过程
- 将字节码文件加载进内存,形成运行时内存结构,形成class对象。
- 分配堆内存空间。
- 调用构造器,创造一个空白对象。
- 子类调用父类构造器。
- 执行子类构造器。

所以,实例化一个对象,是离不开class对象的。
class对象
class对象主要包含Field,Method,Constructor。

因此,class对象包含了这个类的所有信息,通过Field,Method就可以直接访问类的成员。
反射使用
获取class对象
1 | Class c2 = Class.forName("[D"); |
获取成员
getField
通过反射甚至可以访问私有变量。
获取并调用方法
1 | Class<?> klass = methodClass.class; |
应用场景
JDBC数据库连接
Spring框架配置