newInstance()的InstantiationException [英] InstantiationException for newInstance()
问题描述
当 className
java.awt.Rectangle
和时,以下工作正常java.lang.String
等。但它失败了java.lang.Integer
,java。 lang.Double
为 classDefinition.newInstance()
提供 java.lang.InstantiationException
。
Following works fine when the className
is "java.awt.Rectangle"
and "java.lang.String"
etc. But it fails for "java.lang.Integer"
, "java.lang.Double"
giving java.lang.InstantiationException
for classDefinition.newInstance()
.
Class classs = Class.forName(className);
Object object = classs.newInstance();
这是Wrapper类或其他类的问题吗?
Is this a problem with the Wrapper classes or another?
编辑:这样做的方法 - 积分应该转到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);
推荐答案
因为 Integer
没有没有-arg(默认)构造函数, class.newInstance()
将在内部调用默认构造函数
Because Integer
doesn't have no-arg(default) constructor, class.newInstance()
will invoke default constructor internally
这篇关于newInstance()的InstantiationException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!