Class.forName()和ClassLoader.loadClass()

Class.forName(“包名+类名”) ,得到的class(类对象)是经过初始化的,即经过:
  1. 加载:ClassLoader对象将class字节文件生成class对象
  2. 链接:校验class对象的安全性和正确性;为类的静态变量初始化内存空间;将常量池中的间接引用转换成直接引用。
  3. 初始化:激活静态变量和静态代码块,并初始化值。

用途:连接数据库时,Class.forName(“com.mysql.jdbc.Driver”)。

ClassLoader.loadClass(‘类名’), 得到的class(类对象)只是由class字节码文件生成的class对象,没有经过第二,三步。

用途:Spring IOC的资源加载器,获取一些bean的配置文件时,为了加快Spring的初始化,使用的延迟加载技术,即只是将class字节码文件变成class对象,而不去初始化类对象,等到执行代码真正要去生成对象的时候再去链接和初始化类对象,加快Spring的初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值