当前位置:  开发笔记 > 编程语言 > 正文

Java中必需的可复制接口

如何解决《Java中必需的可复制接口》经验,为你挑选了1个好方法。

我在Java中遇到了一个小问题.我有一个名为Modifiable的界面.实现此接口的对象是可修改的.

我也有收到两个修改的对象ModifyCommand类(Command模式)(交换它们在列表中进一步上 - 这不是我的问题,我设计的解决方案的话).

ModifyCommand类首先创建可修改对象的克隆.从逻辑上讲,我使我的Modifiable接口扩展了Cloneable.接口然后定义一个clone()方法,其实现类必须重新定义.

然后,在ModifyCommand中,我可以这样做:firstModifiableObject.clone().我的逻辑是,实施修改的类必须从对象重新定义clone方法,因为他们将可复制(这就是我想要做的).

问题是,当我定义类实现了可修改的,我想重写克隆(),它不会让我,指出从Object类的clone()方法隐藏可修改的一个.

我该怎么办?我的印象是"我做错了"......

谢谢,

纪尧姆.

编辑:它认为我会忘记clone()的事情.我将a)假设传递给Modifiable对象(实现接口)的对象已经克隆或b)创建另一个调用的方法,例如copy(),它基本上会执行Modifiable对象的深层复制(或者通用解决方案可以工作......).



1> Sean Reilly..:

如果您使用的是Java 1.5或更高版本,则可以获得所需的行为并以这种方式删除:

public interface Modifiable> extends Cloneable {
    T clone();
}

public class Foo implements Modifiable {
    public Foo clone() { //this is required
        return null; //todo: real work
    }
}

由于Foo扩展了Object,因此仍然满足Object类的原始契约.由于Modifiable接口施加了额外的限制,因此无法正确优化clone()方法的代码将无法编译.作为奖励,调用代码不必转换克隆方法的结果.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有