2017-05-26 11 views
0

のクローンを作成します。 IMetaFactoryの新しいコピー、それで私はそれに新しいimageIDを設定することができます。私はこのようになりますインターフェイスを持つインターフェイス

mf.setImageId("abc"); 

どうすれば達成できますか?インターフェイス内のクローンメソッドはスタックをオーバーフローさせます(明らかに)。

+2

なぜインターフェースを選択するのか、抽象メソッドclone()を使用して抽象クラスを作成してみませんか? –

+0

メンバー変数として 'imageId'を使用するのではなく、なぜクローンが必要なのですか?そして、必要なときに新しいインスタンスを作成するのはなぜですか? –

+4

サイドノート:インターフェイスに定義されているフィールドが「最終」であることを認識していますか? – 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

関連する問題