,,Java Class.forName()用法和newInstance()方法原理解析

,,Java Class.forName()用法和newInstance()方法原理解析

本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: