有没有办法使用
之类的东西动态地从Class
对象创建数组
MyClass[].newInstance();
我知道它会抛出一个InstantiationException
,但有没有办法让我实例化一个数组,用Class
对象来表示它的类型?
答案 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,因此您只能使用无参数构造函数创建对象。