InstantiationException为的newInstance()[重复](Instanti

2019-07-30 19:45发布

这个问题已经在这里有一个答案:

  • 实例化构造函数的类的对象,它接受一个字符串参数? 4个回答

当下面的工作正常className"java.awt.Rectangle""java.lang.String"等,但它失败了"java.lang.Integer""java.lang.Double"java.lang.InstantiationExceptionclassDefinition.newInstance()

Class classs = Class.forName(className);
Object object = classs.newInstance();

这是包装类或其他问题?

Editted:办法做到这一点-学分应该去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);

Answer 1:

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



Answer 2:

Class.newInstance()只能调用无参数的构造函数和整数没有无参数的构造。



文章来源: InstantiationException for newInstance() [duplicate]