有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java J2ME BlackBerry从数组类创建实例

有没有一种方法可以从Class对象动态地使用

MyClass[].newInstance();

我知道它抛出了一个InstantiationException,但是我有没有办法实例化一个数组,用Class对象指示它的类型


共 (1) 个答案

  1. # 1 楼答案

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