我需要创建一个名为Garage
的实现Cloneable
的类,并覆盖Object.clone()
方法,以对Garage
类型的对象进行深层复制,该对象包含一个数组Vehicle
类型的对象。
我已经阅读过几个SO答案,Cloneable
已被破坏,明智的不使用它,但我的实验室任务要求我实施Cloneable
并编写适当的clone()
方法。我一直在寻找很长的但仍然无法做到这一点。任何帮助将不胜感激。
这是Garage
类的代码:
public class Garage extends Vehicle implements Cloneable {
// array to store up to 15 Vehicle objects
Vehicle array[] = new Vehicle[15];
// overriding the clone method to perform a deeper copy
@Override
protected Object clone() throws CloneNotSupportedException {
//TODO
}
}
这是Vehicle
类的代码:
public class Vehicle {
int numWheels;
int ID;
String name;
}
答案 0 :(得分:1)
首先Garage extends Vehicle
毫无意义。我认为这是一个错误。 Garage
不 a Vehicle
。
在Garage
中,您可以将clone
实现为:
@Override
protected Object clone() {
Garage other = new Garage ();
for (Vehicle v : this.array) {
other.addVehicle((Vehicle)v.clone());
}
return other;
}
然后,您必须在clone()
类层次结构中实现Vehicle
。