我不会发布整个代码,因为我想尝试自己修复此问题,但也许有人可以指出正确的方向。 我正在使用的代码(编辑以显示更多信息):
class GeometricObject implements Cloneable{
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;
private double side;
(some other stuff before this)
}
public abstract class Octagon extends GeometricObject implements Comparable, Cloneable {
public static void test() throws CloneNotSupportedException {
GeometricObject obj1 = new GeometricObject("white", true, 5) ;
Octagon obj1Clone = (Octagon)((Octagon)obj1).clone();
}
public Object clone() throws CloneNotSupportedException {
Octagon obj1Clone = (Octagon) super.clone();
return obj1Clone;
}
运行代码后出现的错误代码是
无法将task3.Octagon $ 1强制转换为task3.Octagon
为了使一切正常,我做了
通过创建对象obj
GeometricObject obj1 = new GeometricObject("white", true, 5) {};
由于它是GeometricObject的对象,因此,在尝试解决此问题时,我已经将implememts Cloneable()放置了,我已经尝试将GeometricObject放入Octagon obj1Clone = (Octagon)((Octagon)obj1).clone();
的不同部分中,以尝试在我做错的情况下走运。我完全理解您是否由于缺少我给您的代码而无法帮助我。
而且,在您说出来之前,我知道clone()如今已很少使用,但这是一项任务,因此我必须使用它。
谢谢!