当className
为"java.awt.Rectangle"
和"java.lang.String"
等时,以下工作正常。但"java.lang.Integer"
,"java.lang.Double"
java.lang.InstantiationException
为classDefinition.newInstance()
{1}}。
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);
答案 0 :(得分:33)
因为Integer
没有no-arg(默认)构造函数,class.newInstance()
将在内部调用默认构造函数
答案 1 :(得分:10)
Class.newInstance()只能调用零参数构造函数,Integer没有ZERO参数构造函数。