25

以下は、classNameis"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();

これは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);
4

2 に答える 2

35

Integerno-arg(default)コンストラクターがないため、class.newInstance()デフォルトのコンストラクターを内部で呼び出します

于 2012-08-06T04:39:12.843 に答える
12

Class.newInstance()はゼロ引数コンストラクターのみを呼び出すことができ、Integerにはゼロ引数コンストラクターがありません。

于 2012-08-06T04:41:18.467 に答える