知识大全 初始化类时newInstance和new的区别

Posted

篇首语:勤勉而顽强地钻研,永远可以使你百尺竿头更进一步。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 初始化类时newInstance和new的区别相关的知识,希望对你有一定的参考价值。

初始化类时newInstance和new的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在初始化一个类 生成一个实例的时候 newInstance() 和 new 有什么区别?  用newInstance与用new是区别的 区别在于创建对象的方式不一样 前者是使用类加载机制 那么为什么会有两种创建对象方式?这个就要从可伸缩 可扩展 可重用等软件思想上解释了   Java中工厂模式经常使用newInstance来创建对象 因此从为什么要使用工厂模式上也可以找到具体答案   例如   Class c = Class forName( A );factory = (AInterface)c newInstance();  其中AInterface是A的接口 如果下面这样写 你可能会理解   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类怎么变化 上述代码不变 甚至可以更换A的兄弟类B C D 等 只要他们继承Ainterface就可以    从jvm的角度看 我们使用new的时候 这个要new的类可以没有加载   但是使用newInstance时候 就必须保证 这个类已经加载 这个类已经连接了 而完成上面两个步骤的正是class的静态方法forName()方法 这个静态方法调用了启动类加载器(就是加载java API的那个加载器)   有了上面jvm上的理解 那么我们可以这样说 newInstance实际上是把new这个方式分解为两步 即 首先调用class的加载方法加载某个类 然后实例化   这样分步的好处是显而易见的 我们可以在调用class的静态加载方法forName时获得更好的灵活性 提供给了我们降耦的手段 cha138/Article/program/Java/JSP/201311/19375

相关参考

知识大全 JavaScript:new 一个函数和直接调用函数的区别分析

JavaScript:new一个函数和直接调用函数的区别分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 继承和finalize()

  通过合成方法创建新类时永远不必担心对那个类的成员对象的收尾工作每个成员都是一个独立的对象所以会得到正常的垃圾收集以及收尾处理——无论它是不是不自己某个类一个成员但在进行初始化的时候必须覆蓋衍生类中

知识大全 什么时候考虑使用静态

  静态方法不用new对象可以直接调用  与类相关与对象无关  不需要对象的轻方法  工厂方法  如果某个方法是用频率较高或者方法本身通用性较强无需初始化类成员变量则可以使用静态方法那样方便速度也快 

知识大全 使用Override和New关键字进行版本控制

使用Override和New关键字进行版本控制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C

新火山Volcano,New

一个新火山的诞生不仅是一种激动人心和令人生畏的场面,而且是一种罕见的事件。在有史时期只观察到大约十二个新火山。它们产在大洋底和大陆上(在有史期间内形成的寄生火山锥,例如西西里埃特纳火山斜坡上的那些寄生

知识大全 sealed、new、virtual、abstract 和 override

   一sealed 密封类不能被继承密封方法可以重写基类中的方法但本身不能在任何子类中进行重写     &n

知识大全 为什么知乎上关于 Surface Pro 3 和 New MacBook 的争论不断

为什么知乎上关于SurfacePro3和NewMacBook的争论不断  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 如何使用new

在实际应用中SQLPLUS中的new_value作用是很大的利用它可以解决许多的问题  引用如下    OracleSQL*Plushasaveryusefulnewsubparametertothe

知识大全 对C#泛型中的new()约束的一点思考

对C#泛型中的new()约束的一点思考  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对于new

知识大全 asp.net2.0新闻标题后加new或图片

  中使用gridview显示新闻标题如何在当日新加新闻的标题后加一个new或图片   在后台或者公共类Common写如下类  publicstaticstringNew