newInstance()的InstantiationException
当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();
这是Wrapper类或其他类的问题吗?
编辑:这样做的方法 – 积分应该去Jigar。
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(默认)构造函数, class.newInstance()
将在内部调用默认构造函数
Class.newInstance()只能调用零参数构造函数,而Integer没有ZERO参数构造函数。