2

Class次のようなものを使用してオブジェクトから動的に配列を作成する方法はありますか

MyClass[].newInstance();

がスローされることは承知してい InstantiationExceptionますが、その型を示す配列をClassオブジェクトでインスタンス化する方法はありますか?

4

1 に答える 1

0

java.lang.reflect.Array.newInstance()は J2ME では使用できないため、オブジェクトごとにこれを行うにはループが必要だと思います。

private Object[] createArray(String fullClassName, int length) {
    Object[] objects = new Object[length];
    try {
        Class c = Class.forName(fullClassName);
        for (int i = 0; i < objects.length; i++) {
            objects[i] = c.newInstance();
        }
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InstantiationException e) {
        e.printStackTrace();
    }
    return objects;
}

名前を完全修飾することを忘れないでください (文字列化されたクラス名を使用している場合):

  Object[] array = createArray("mypackage.Widget", 10);

package mypackage;

public class Widget {
    public int foo() {
        return 5;
    }
}

getConstructor() メソッドBlackBerry クラスでは使用できないため、引数のないコンストラクターを使用したオブジェクトの作成に限定されることに注意してください。

于 2013-06-29T01:55:42.803 に答える