Java:调用类的构造函数

时间:2014-01-15 20:20:15

标签: java class arraylist constructor

我有一个ArrayList,它包含可能不同类的对象,需要调用类构造函数。

ArrayList list = new ArrayList();

list.add(new Child1());
list.add(new Child2());

public void Spawn(){

Class clazz = list.get(0).getClass();

list.add(clazz.getConstructor().newInstance());
}

我怎样才能做到这一点?代码中的最后一行返回错误,因为clazz.getConstructor().newInstance()返回一个对象,而不是child1的实例。不同的列表项都有一个共同的父项,实际上列表中的项甚至可以都是相同的,但我不能将类名硬编码到程序中。

编辑: 我可能已经把这个例子搞得太过分了。

我基本上有一个操作ArrayLists的类,需要添加已经在里面的对象的新实例,但是列表里面可能有不同的类类型。

编辑: 基于每个人的回答,这显然是解决问题的错误方法! 我想我会为点亮的对象尝试一种克隆方法,但我也会完全寻找一种不同的方法。 谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这很好用:

public static void arraylist() throws Exception {
    ArrayList list = new ArrayList();

    list.add(new X());

    Class clazz = list.get(0).getClass();

    list.add(clazz.getConstructors()[0].newInstance());

}

我不是说你应该用它..