4

看看下面的这一行:

targetClass = Class.forName(className).newInstance().getClass();

我的问题是他为什么要调用 newInstance().getClass();

写就够了吗

targetClass = Class.forName(className);

?

4

2 回答 2

2

调用 没有意义 newInstance().getClass(),因为它会产生与Class实例化相同的实例。

相反,它会创建一个额外的实例,该实例将立即被“删除”。如果类没有默认构造函数,即使它也不起作用。

此外,实例化、初始化等的成本可能是显着的。

于 2013-02-05T11:14:17.463 回答
2

是的。

Class<T> targetClass = Class<T>.forName(className);

对象创建更好地使用 getConstructor。

T obj = targetClass.getConstructor().newInstance();

调用Class.newInstance会出现 javadoc 中提到的问题。

于 2013-02-05T11:17:52.577 回答