【发布时间】:2014-06-04 19:47:59
【问题描述】:
我想通过一个字符串变量创建新的类实例,将 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 类)?
【问题讨论】:
-
something.add( (Bar) instanceOfMyClass ); -
哪一行报错了?堆栈跟踪是什么? (或者这是编译时错误?)
-
好吧,这实际上并不重要,因为只有这两件事会给出错误,并且纠正它是有效的,谢谢! ;)
标签: java