25

className当is"java.awt.Rectangle"等时,以下工作正常"java.lang.String"。但它失败了 for "java.lang.Integer""java.lang.Double"java.lang.InstantiationExceptionfor 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);
4

2 回答 2

35

因为Integer没有无参数(默认)构造函数,class.newInstance()将在内部调用默认构造函数

于 2012-08-06T04:39:12.843 回答
12

Class.newInstance()只能调用零参数构造函数,而Integer没有零参数构造函数。

于 2012-08-06T04:41:18.467 回答