本文主要介绍Java Class.forName()的用法和newInstance()方法的原理分析。通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友可以参考一下。
Class.forName()主要功能
Class.forName(xxx.xx.xx)返回一个类
Class.forName(xxx.xx.xx)的作用是要求JVM找到并加载指定的类,也就是说JVM会执行该类的静态代码段。
下面,我们将通过回答以下三个问题来详细解释Class.forName()的用法。
new和Class.forName()的区别以及newInstance的用法?
包装。一”)。new instance();
A A=new A();
这两种实例化方法具有相同的效果。
在上面的例子中,创建了实例化的对象A。让我们看看newInstance在这个例子中的作用。
string str=" ABCDEFG ";//创建一个字符串
class t=class . forname(str);//获取str变量的类相当于字符串t。
t . new instance();//相当于t=新字符串
在初始化类和生成实例时,newInstance()方法和new关键字除了一个是方法,一个是关键字之外,主要区别是什么?两者的区别在于创建对象的方式不同。前者(newInstance)使用类加载机制,而后者(new)创建一个新类。那么为什么有两种创建对象的方法呢?这主要是考虑到可伸缩性、可扩展性、可重用性等软件设计思路。
从JVM的角度上看
当我们使用关键字new创建一个类时,这个类可能不会被加载。但是当使用newInstance()方法时,必须确保:
1.此类已经加载;
2.此课程已经连接。
完成以上两步的是Class的静态方法forName(),该方法调用启动类加载器,也就是加载java API的加载器。
现在可以看到,newInstance()实际上是将新方法分解为两步,即先调用类加载方法加载一个类,然后实例化。这种循序渐进的方法的优势是显而易见的。我们可以在调用类名称的静态加载方法时获得更好的灵活性,这提供了一种解耦的方法。
区分
第一,newInstance()是方法,new是关键字;
其次,newInstance()在Class下的使用是有限制的,因为它在生成对象时只能调用无参数的构造函数,而在使用new关键字生成对象时则没有这种限制。
简而言之:
NewInstance():弱类型,效率低,只能调用无参数构造。
New:强类型,相对高效,可以调用任何公共构造。
Class.forName("类名")返回该类。
Class.forName("类名")。newInstance()返回一个对象。
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。