1

だから私はクラスの配列を持っています:

Class<?>[] classes;

そして、コンストラクターにそのクラスを設定します。

public Sample (Class<?>[] classes){
this.classes = classes;
}

次に、インデックスに応じていずれかのクラスのインスタンスを返すメソッドがあります。

public Object getInstanceOfClassWithIndex(int index){
   return new classes[index];
}

残念ながら、それは機能せず、コンパイル エラーが発生します。ありがとう。どんな助けでも大歓迎です。

4

3 に答える 3

2

特定のインデックスでクラスのオブジェクトを作成するには、 newInstance()メソッドを呼び出す必要があります。

return classes[index].newInstance();
于 2012-11-25T04:30:52.473 に答える
0

問題は、ここに不要なものがあることnewです:

return new classes[index];

試してみてください:

return classes[index];

Class<T>これはの新しいインスタンスではなく を返すことに注意してTください。それを生成するには、 を介してリフレクションを使用する必要がありますnewInstance()

于 2012-11-25T04:32:01.783 に答える
0

交換:

public Object getInstanceOfClassWithIndex(int index){
   return new classes[index];
}

と:

public Object getInstanceOfClassWithIndex(int index){
   return classes[index];
}

新しいインスタンスを作成していないため、nonewは必要ありません。

于 2012-11-25T04:32:02.150 に答える