创建Interface的克隆

时间:2017-05-26 22:01:33

标签: java interface

我有一个如下所示的界面:

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");

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

1 个答案:

答案 0 :(得分:-2)

我认为你可以使用抽象clone()方法的抽象类,每个类从该抽象类继承实现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;
    }
}