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