看看下面的这一行:
targetClass = Class.forName(className).newInstance().getClass();
我的问题是他为什么要调用 newInstance().getClass();
写就够了吗
targetClass = Class.forName(className);
?
看看下面的这一行:
targetClass = Class.forName(className).newInstance().getClass();
我的问题是他为什么要调用 newInstance().getClass();
写就够了吗
targetClass = Class.forName(className);
?
调用 没有意义 newInstance().getClass()
,因为它会产生与Class
实例化相同的实例。
相反,它会创建一个额外的实例,该实例将立即被“删除”。如果类没有默认构造函数,即使它也不起作用。
此外,实例化、初始化等的成本可能是显着的。
是的。
Class<T> targetClass = Class<T>.forName(className);
对象创建更好地使用 getConstructor。
T obj = targetClass.getConstructor().newInstance();
调用Class.newInstance会出现 javadoc 中提到的问题。