我有一个名为AClass
的抽象类。在同一包中,我有AnotherClass
,其中我有一个AClass
对象的ArrayList
。在AnotherClass
的复制构造函数中,我需要复制ArrayList
中的AClass
对象。
问题:
我不能在AClass
中创建复制构造函数,因为它是一个抽象类,我无法知道将继承AClass
的类的名称。实际上,在此项目中,没有对象将继承自此类,但此项目将作为库被其他将提供AClass
子类的项目使用。我的设计中是否存在错误?还是有解决这个问题的方法?
编辑: 这里是一些代码:
public class AnotherClass{
private ArrayList<AClass> list;
...
/** Copy constructor
*/
public AnotherClass(AnotherClass another){
// copy all fields from "another"
this.list = new ArrayList<AClass>();
for(int i = 0; i < another.list.size(); i++){
// Option 1: this.list.add(new AClass(another.list.get(i)));
// problem: cannot instantiate AClass as it is abstract
// Option 2: this.list.add(another.list.get(i).someKindOfClone());
// problem? I'm thinking about it, seems to be what dasblinkenlight is suggesting below
}
}
...
}
AClass
是抽象的。你不能创建AClass
的实例。 - Jimmy