![](/img/trans.png)
[英]How to create an instance of a class with a variable string name in Java?
[英]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);
这将查找采用一个int
或Integer
而不是int
数组的构造函数。
如果要查找采用int[]
的构造函数,则传递正确的参数:
Class[] types = { int[].class };
Constructor constructor = myClass.getConstructor(types);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.