我现在正在做一个关于继承和深度克隆的报告。
交接是关于使用继承和深度克隆的思想,使用在画布上绘制形状的程序重写给我们的代码。
现在我已经clone()为超类point和我的子类实现了这个方法group,但是当它编译时我总是在我的子类中得到一个CloneNotSupportedExceptionwith clone(),我真的不明白为什么。
这是我的超类的代码:
public abstract class Point implements Cloneable
{
public Point clone()
{
try {
Point copy = (Point)super.clone();
copy.imgGroup = (ArrayList<Point>)imgGroup.clone();
return copy;
}
catch (CloneNotSupportedException e) {
throw new InternalError();
}
}
}
这是我的子类的代码:
public class Group extends Point implements Cloneable
{
public Group clone()
{
try {
Group copy = (Group)super.clone();
copy.group = (ArrayList<Point>)group.clone();
for (int i = 0; i < group.size(); i++) {
copy.group.set(i,group.get(i).clone());
}
return copy;
}
catch (CloneNotSupportedException e) {
throw new InternalError();
}
}
}
任务:
构造类Group。Figure可以将某个对象添加到多个不同的组中。您必须确定同一个Figure对象是否可以同时属于多个组。在本练习中,这不应该发生。所有Group对象都必须独占它们的 item 对象。不会发生多个组之间的对象共享。
因此,我们开始添加方法:
public Figure class clone ();
// (define it in the same style as on page 4 in the document below)
// this was what point clone() was in the class Point.
在此之后,有一些方法和Group克隆的实现说明。
因此,在此任务中,我应该Group使用各种方法以及 new来实现clone(),这就是我现在遇到的问题。
我希望你能帮助我指出正确的方向,只是想知道为什么会这样。谢谢!
烙印99
相关分类