gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:04:54 29 4
gpt4 key购买 nike

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

最佳答案

new 操作符创建一个静态已知类型的新对象(在编译时),并且可以调用您尝试创建的对象上的任何构造函数。这是创建对象的首选方式 - 它速度快,并且 JVM 对其进行了大量积极优化。

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

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

关于java - new 运算符和 Class.newInstance() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612386/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com