new运算符和Class.newInstance()有什么区别?

new和之间有什么区别Class.forName(...).newInstance()?它们都创建一个类的实例,我不确定它们之间有什么区别。

回答:

new操作创建一个是静态已知的(在编译时),并可以调用你想创建对象的任何构造一个类型的新对象。这是创建对象的首选方式-

快速且JVM对它进行了许多积极的优化。

Class.forName().newInstance()是一个动态构造,用于查找具有特定名称的类。它比使用速度慢,new因为无法将对象的类型硬编码到字节码中,并且因为JVM可能必须执行权限检查以确保您有权创建对象。它也是部分不安全的,因为它始终使用零参数构造函数,并且如果您要创建的对象没有null构造函数,它将引发异常。

简而言之,new如果您在编译时知道要创建的对象类型,则使用。使用Class.forName().newInstance(),如果你不知道你会作出什么类型的对象。

以上是 new运算符和Class.newInstance()有什么区别? 的全部内容, 来源链接: utcz.com/qa/404348.html

回到顶部