new与newInstance()的区别
目录
简单测试
|
|
返回为ture
这两种方法得到的结果是一样的
原因
分析下原因,第一种方法是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化
可以分解开
|
|
通过
|
|
可以动态的创建对象
Object st = (String)Class.forName("java.lang.String").newInstance();
这个方法返回的是一个类,可以强制转换成各种子类
主要作用
因此可以改变强制转换的类型与forName()
的参数来创建不同类型的对象,只要他们是Object的子类
在连接数据库时,发现还可以这样用Class.forName(driver);
查找资料了解到,这个方法在使用时,JVM会查找并加载指定的类,也就是说JVM会执行该类的静态代码段
而使用new时,这个类可以没有被加载(是可以不是一定)
测试使用Driver dri=new Driver();
一样加载了类
然后测试了下构造方法的调用
|
|
如果想要调用构造方法,需要调用newInstance.forname()
会导致类被初始化,newInstance()才会实例化,而new()初始化+实例化
总结
初始化和实例化的区别,另开一篇再做研究 相比较,new的语句简单,可以在创建时加入参数调用构造函数,而newInstance()把创建对象步骤分开,使得更灵活