私はつまり、私は仕事にこのような何かを必要とする、多型クローニング(深いコピー)と私のクラスを装備する必要があります:Javaクローン()メソッドは、多型クローニングを実現する唯一の方法ですか?
original.clone()
は深いコピーを作成するための任意のメカニズム、および実際の型によって置換することができる
SuperType original = new SubType();
SuperType copy = original.clone();
copy
の値はであるため、もSubType
であるため、SubType
となります。
clone()
メソッドとCloneable
インターフェイスはこれを実現する唯一の方法ですか?実際のクラスは実行時にのみ認識されるため、ファクトリメソッドとコピーコンストラクタは使用できません。それらのシリアライズ - デシリアライズアプローチを除いて、他に提案されているメソッドがありますか?clone()
メソッドよりもさらに悪い黒い魔法ですJava deep-cloning library?あなたがCloneable
インターフェイスが気に入らない場合は
おかげで、ペトル
クローン作成するオブジェクトを渡すことができるコンストラクタを作成することはできません。 – Justin
@gangqinlaohu確かに、元のクラスが実際には 'SubType'か、' SubType2'であればコードを書く時は分からないので、 'new SubType(original)'を呼び出す必要があります。 、または 'SubSubType'です。 – Posa