当前位置: 首页 >> 面试题 >> 技术 >> 后端开发 >> Java >>

Java面试:loadClass()和forName()的区别

两者都可以返回Class对象,区别就是类加载的程度不同。

loadClass()方法返回的Class对象默认只进行了加载阶段,而连接和初始化阶段是还没进行的,所以说,使用loadClass()方法默认是不会触发该类里面的静态代码块的。

forName()方法返回的Class对象默认已经进行完初始化了,所以说会触发类里面的静态代码块。

比如说像JDBC中的Driver类是通过forName()方法来获取的,就是因为Driver类里面有一个静态代码块,所以需要使用forName()

而loadClass()在Spring IOC中延迟加载用得很广泛

Loading