为什么我的克隆不会工作。 Java的

时间:2016-08-19 19:05:58

标签: java

我有一类名为item的对象,但克隆功能不起作用。

Item newItem = addedItem.clone();

请帮助:'(

加入:

public abstract class Item extends GameObjectsCls implements Cloneable

Item newItem = (Item)addedItem.clone();

并添加了公共克隆方法,但现在要求try catch语句。这可以吗?公开Object clone() throws CloneNotSupportedException {

1 个答案:

答案 0 :(得分:2)

首先,您的Item类需要实现Cloneable接口,否则clone()会抛出异常。这在documentation for Object#clone()

中有解释

其次,您的班级需要实施clone()的公开版本,因为clone()的{​​{1}}方法是Object

最后,您可能需要将结果投射到protected以使作业有效,具体取决于您在班级Item中声明clone()的方式。

编辑(基于OP的编辑):您的Item方法应如下所示:

clone()

没有必要声明它会抛出public class Item implements Cloneable { ... public Item clone() { return (Item) super.clone(); } } ,因为它赢了。

但是,我建议您完全停止使用CloneNotSupportedException并简单地实现复制构造函数:

clone()

然后你可以创建你的"克隆"像这样:

public class Item {
    public Item(Item other) {
        // copy over relevant fields
    }
    // ... other constructors
}