一尘不染

newInstance()的InstantiationException

java

以下工作正常时,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();

这是包装类或其他类的问题吗?

编辑:做到这一点的方式-学分应该去吉加尔。

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);

阅读 226

收藏
2020-12-03

共1个答案

一尘不染

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

2020-12-03