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