出于多态性的目的,我有一个获取抽象类作为参数的方法。 但在方法内部,我想返回已制作的实际对象的副本。
例子:
//Animal is an abstract class
public Animal findAndClone(Animal[] zoo){
for (Animal a:zoo)
//find some animal...
return new Animal(a) //cant instantiate an abstract class
}
我尝试使用上面看到的复制构造函数,但它无法实例化抽象。
我想在基类中定义一个 clone()
但我在基类中遇到了同样的问题。
如何正确执行此操作?
谢谢。
最佳答案
除非你想依赖dodgy Object.clone
method ,您最好在 Animal
中创建一个抽象的 copy
方法,并确保所有子类都正确覆盖它。
abstract class Animal {
...
// Needs to be implemented by subclasses. A Dog returns a Dog, etc...
public abstract Animal copy();
...
}
然后而不是做
return new Animal(a);
你会
return a.copy();
关于java - 如何克隆被声明为抽象父类(super class)的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9444031/