繁体   English   中英

如何通过字符串名称创建类实例

[英]How to create class instance by string name

我想通过字符串变量创建新的类实例,将int []作为参数传递给此构造函数,然后将此实例保存在数组列表中。

更重要的是,该类来自其他一些类,比如说Bar。 该数组列表的类型为Bar。 所以:

    List<Bar> something = new ArrayList<Bar>();
    String name = "Foo";
    int[] arr = {1, 2, 3, 4, 5};
    try {
        Class myClass = Class.forName(name);
        Class[] types = {Integer.TYPE};
        Constructor constructor = myClass.getConstructor(types);
        Object[] parameters = {arr};
        Object instanceOfMyClass = constructor.newInstance(parameters);
        something.add(instanceOfMyClass);
    } catch(ClassNotFoundException e) {
        // handle it
    } catch(NoSuchMethodException e) {
        // handle it
    } catch(InstantiationException e) {
        // handle it
    } catch(IllegalAccessException e) {
        // handle it
    } catch(InvocationTargetException e) {
        // handle it
    }

这是我想出的,但是不幸的是它不起作用。 我如何在这里传递整数数组(类型是什么)? 如何将这个实例添加到此处给出的数组列表中(抛出一个错误,我必须将Foo类的实例强制转换为Foo类)?

Class[] types = {Integer.TYPE};
Constructor constructor = myClass.getConstructor(types);

这将查找采用一个intInteger而不是int数组的构造函数。

如果要查找采用int[]的构造函数,则传递正确的参数:

Class[] types = { int[].class };
Constructor constructor = myClass.getConstructor(types);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM