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 Class中不可用,因此您只能使用无参数构造函数创建对象。

于 2013-06-29T01:55:42.803 回答