克隆Java中的接口

Eya*_*yal 3 java

我在Java中有一个问题:

我有一个界面:

public interface I extends Cloneable {

}
Run Code Online (Sandbox Code Playgroud)

和抽象类:

public abstract class AbstractClass {

    private I i;

    public I i() {
        return (I)(i).clone();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

对于类型I,方法clone()未定义

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

谢谢.

oxb*_*kes 7

您需要覆盖该clone()方法才能公开

public interface MyI extends Cloneable {
    public MyI clone();
}
Run Code Online (Sandbox Code Playgroud)

相当奇怪的是,Cloneable实际上并不包含该clone()方法并且clone()正在protected开启Object!之前已经讨论过 SO