IDeepCopy Interface java



我在理解以下内容时遇到了一些麻烦: 我应该实现一个名为IDeepCopy的接口。

说明"此接口是必需的,因为 Java 提供的可克隆接口不会重新声明对象的克隆方法。我们希望将其用作泛型类的有界类型,因此需要这个额外的接口。 我们选择使用 IDeepCopy 接口来简化复制/克隆对象的处理。实现此接口的类应通过调用私有复制构造函数或创建同一类的新对象并相应地设置其值来构造对象的副本。请记住,在复制的对象上设置类的属性之前,也应以相同的方式复制类的属性(如果它们实现 IDeepCopy 接口)。 IDeepCopy deepCopy()">

我声明了接口,但我真的不知道如何相应地实现该方法。

我的想法如下(在子类中实现该方法):

public SimpleProduct deepCopy(){
return new SimpleProduct(x,x);
}

但是,如果我在deepCopy中没有将对象作为参数,如何设置设置属性?

从描述中,听起来您只是应该将任何相应的值从原始实例传递到新实例,并在适用的情况下调用.deepCopy()

例如
public class SimpleProduct implements IDeepCopy {
private final int x;
private final OtherClass y;
public SimpleProduct(int x, OtherClass y) {
this.x = x;
this.y = y;
}
public SimpleProduct deepCopy() {
return (y instanceof IDeepCopy) ? new SimpleProduct(x, ((IDeepCopy)y).deepCopy()) : new SimpleProduct(x, y);
}
}

编辑:使用评论中@c0der的建议更新deepCopy实现

最新更新