本文主要是介绍newInstance() 和 new 区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原作者:http://blog.csdn.net/truong/article/details/34928645
newInstance: 弱类型。低效率。只能调用无参构造。 new: 强类型。相对高效。能调用任何public构造。
在初始化一个类,生成一个实例的时候;newInstance() 和 new 有什么区别?
创建方式:
newInstance:类加载机制
Class c = Class.forName(“A”);factory = (AInterface)c.newInstance(); String className = "A";Class c = Class.forName(className);factory = (AInterface)c.newInstance(); String className = readfromXMlConfig;//从xml 配置文件中获得字符串Class c = Class.forName(className);factory = (AInterface)c.newInstance();
优点:从以上例子中看出,无论A类怎么变化,上述代码不变,甚至可以更换A的兄弟类B , C , D….等,只要他们继承Ainterface就可以。
从jvm的角度:
使用newInstance条件:
1、这个类已经加载;
2、这个类已经连接了。
使用new的条件:
可以没有加载!
newInstance就是把new这个方式分解为两步,
即首先调用class的加载方法加载某个类,然后实例化。
这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了我们降耦的手段。
这篇关于newInstance() 和 new 区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!