反射中Class.forname函数与ClassLoader.getSystemClassLoader().loadClass的区别

Class.forName加载类是将类进了初始化(相当于调用无参构造函数,会调用static静态代码来初始化配置),

而ClassLoader的loadClass并没有对类进行初始化,只是把类加载到了虚拟机中。

应用场景

在我们熟悉的Spring框架中的IOC的实现就是使用的ClassLoader。

而在我们使用JDBC时通常是使用Class.forName()方法来加载数据库连接驱动。这是因为在JDBC规范中明确要求Driver(数据库驱动)类必须向DriverManager注册自己。

posted @ 2019-03-11 21:04  等价交换原则  阅读(1170)  评论(0编辑  收藏  举报