newInstance()的InstantiationException

时间:2012-08-06 04:37:52

标签: java reflection

className"java.awt.Rectangle""java.lang.String"等时,以下工作正常。但"java.lang.Integer""java.lang.Double" java.lang.InstantiationExceptionclassDefinition.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);

2 个答案:

答案 0 :(得分:33)

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

答案 1 :(得分:10)

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