使用Class.forName获取类

时间:2013-02-05 11:10:08

标签: java reflection

请看下面这一行:

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

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

是否足够
targetClass = Class.forName(className);

2 个答案:

答案 0 :(得分:3)

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

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

此外,实例化,初始化等的成本可能非常高。

答案 1 :(得分:2)

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

对象创建更好地使用getConstructor。

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

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