我想通过字符串变量创建新的类实例,将int []作为参数传递给此构造函数,并将此实例保存在数组列表中。
更重要的是,那个班级来自其他一些班级,让我们说巴尔。该数组列表的类型为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类)?
答案 0 :(得分:4)
Class[] types = {Integer.TYPE};
Constructor constructor = myClass.getConstructor(types);
这会查找一个带有int
或Integer
的构造函数,而不是int
的数组。
如果要查找带有int[]
的构造函数,则传递正确的参数:
Class[] types = { int[].class };
Constructor constructor = myClass.getConstructor(types);