new与newInstance()的区别
来源:互联网 发布:批处理 软件 编辑:程序博客网 时间:2024/05/16 12:01
String st1=new String();
boolean bl=st.getClass()==st1.getClass();
System.out.println(bl);
返回为ture
这两种方法得到的结果是一样的
分析下原因,第一种方法是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化
可以分解开
Class cla=Class.forName("java.lang.String");//初始化
Object obj=cla.newInstance();//实例化为object类
String str=(String)obj;//向下转换回子类
但
Class.forName()有它自己的用法
通过
String str ="";
Class c = Class.forName(str);
c.newInstance();
可以动态的创建对象
Object st = (String)Class.forName("java.lang.String").newInstance();
这个方法返回的是一个类,可以强制转换成各种子类
因此可以改变强制转换的类型与forName()的参数来创建不同类型的对象,只要他们是Object的子类
在连接数据库时,发现还可以这样用
Class.forName(driver);
查找资料了解到,这个方法在使用时,JVM会查找并加载指定的类,也就是说JVM会执行该类的静态代码段
而使用new时,这个类可以没有被加载(是可以不是一定)
测试使用Driver dri=new Driver();一样加载了类
然后测试了下构造方法的调用
class ceshi{
int a=0;
public ceshi(){
System.out.println(a);
}
}
Class aaa=Class.forName("ceshi");//没有调用构造方法
aaa.newInstance();//调用
new ceshi();//调用
如果想要调用构造方法,需要调用newInstance
forname()会导致类被初始化,newInstance()才会实例化,而new()初始化+实例化
初始化和实例化的区别,另开一篇再做研究
相比较,new的语句简单,可以在创建时加入参数调用构造函数,而newInstance()把创建对象步骤分开,使得更灵活
- newInstance 与New的区别
- new 与newInstance的区别
- new与newInstance()的区别
- newInstance()与new的区别
- Class.newInstance()与new、Constructor.newInstance()的区别
- Class.newInstance()与new、Constructor.newInstance()的区别
- Class.newInstance()与new、Constructor.newInstance()的区别
- new 和 newInstance 的区别
- newInstance于new的区别
- new和newInstance()的区别
- newInstance()和new ()的区别
- new和newInstance()的区别
- new和newInstance的区别
- newInstance()和new的区别
- newInstance和new的区别
- newInstance( )和new的区别
- newInstance 和 new的 区别
- newInstance()和new()的区别
- 面向对象—静态变量
- Android-6.0之PMS解析中篇2
- scikit-learn使用方法
- 一列timedelta数据转换为int或float
- 自动批量删除微博取消关注删除私信脚本
- new与newInstance()的区别
- 4.22 HPING 使用方法
- java输入以end结束
- Golang 学习之路三:基础命令
- 应用程序图标丢失快捷方式没有图标怎么办
- Android-6.0之PMS解析下篇
- 组件方式开发 Web App全站-6-图表组件-散点图组件开发
- json篇 如何拼接json格式和前台如何解析json格式的
- 白妍玲的俏脸蛋