以下工作正常时,className是"java.awt.Rectangle"和"java.lang.String"等,但它失败了"java.lang.Integer","java.lang.Double"给java.lang.InstantiationException了classDefinition.newInstance()。
className
"java.awt.Rectangle"
"java.lang.String"
"java.lang.Integer"
"java.lang.Double"
java.lang.InstantiationException
classDefinition.newInstance()
Class classs = Class.forName(className); Object object = classs.newInstance();
这是包装类或其他类的问题吗?
编辑:做到这一点的方式-学分应该去吉加尔。
Class integerDefinition = Class.forName("java.lang.Integer"); Constructor intArgsConstructor = integerDefinition.getConstructor(new Class[] {int.class}); Object[] intArgs = new Object[] { new Integer(12) }; Object object = intArgsConstructor.newInstance(intArgs);
因为Integer没有no- arg(default)构造函数,所以class.newInstance()将在内部调用默认构造函数
Integer
class.newInstance()