J2ME BlackBerry从数组类创建实例

时间:2013-06-27 17:47:58

标签: java blackberry java-me java-micro-editon-sdk3.0

有没有办法使用

之类的东西动态地从Class对象创建数组
MyClass[].newInstance();

我知道它会抛出一个InstantiationException,但有没有办法让我实例化一个数组,用Class对象来表示它的类型?

1 个答案:

答案 0 :(得分: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() method中没有BlackBerry Class,因此您只能使用无参数构造函数创建对象。