2017-05-26 74 views
0

的克隆我有一个看起来像这样的接口:创建界面

public interface IMetaFactory { 
    String imageId = new String(); 
    // some default methods 
    void setImageId(String id); 
    default String getImageId() { 
     return imageId; 
    } 
} 

我需要在此界面中添加克隆方法,当我打电话:

IMetaFactory mf = metafactory.clone(); 

它返回一个新副本IMetaFactory,以便我可以在其中设置新的imageID

mf.setImageId("abc"); 

我该如何实现它?界面内的克隆方法只是溢出堆栈(显然)。

+2

为什么选择Interface,为什么不用抽象方法clone()。 –

+0

为什么你需要克隆呢,而不是仅仅把'imageId'作为一个成员变量,然后在你想要的时候创建一个新的实例呢? –

+4

附注:您是否知道在界面中定义的字段是“final”? – Pshemo

回答

-2

我想你可以使用抽象类是从抽象类每类继承实现克隆方法并返回这个抽象的clone()方法:

public abstract class MetaFactory { 
    String imageId = new String(); 
    // some default methods 
    void setImageId(String id); 
    default String getImageId() { 
     return imageId; 
    } 

    public abstract MetaFactory clone(); 
} 

,并在任何继承类的实现抽象类如下:

public class A extends MetaFactory { 
    //the lone method implementation 
    public MetaFactory clone(){ 
     return this; 
    } 
} 
+0

你是否检查过你的代码编译? – alfasin