当className是"java.awt.Rectangle"和"java.lang.String"等时,下面的操作很好。但是对于"java.lang.Integer"来说,它失败了,"java.lang.Double"给出了classDefinition.newInstance()的java.lang.InstantiationException。
Class classs = Class.forName(className);
Object object = classs.newInstance();这是包装类的问题还是另一个问题?
编辑:做这件事的方法-学分应该分配给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);发布于 2012-08-06 04:39:12
由于Integer没有-arg(默认)构造函数,class.newInstance()将在内部调用默认构造函数。
发布于 2012-08-06 04:41:18
Class.newInstance()只能调用零参数构造函数,而Integer没有零参数构造函数。
https://stackoverflow.com/questions/11822621
复制相似问题