克隆Java中的接口

时间:2009-11-20 11:46:34

标签: java

我在Java中遇到问题:

我有一个界面:

public interface I extends Cloneable {

}

和一个抽象类:

public abstract class AbstractClass {

    private I i;

    public I i() {
        return (I)(i).clone();
    }
}

但clone()的使用会产生以下错误:

  

方法clone()未定义   类型I

有没有人有任何想法如何解决这个问题?我发现的唯一修复是向我添加一个新方法:(我newI())将克隆I.是否有更清洁的解决方案?

感谢。

2 个答案:

答案 0 :(得分:7)

您需要覆盖clone()方法为公开

public interface MyI extends Cloneable {
    public MyI clone();
}

相当奇怪,Cloneable实际上并不包含clone()方法,clone() protected Object {{1}}在SO

上一直是discussed before

答案 1 :(得分:2)

如果你改变会发生什么:

return (I)(i).clone();

return ((I)i).clone();