あなたは書きました:
を私はこれを行う方法をCloneable
インタフェースを実装していないオブジェクトのクローンを作成する必要があります。
仕事へのクローンのための要件は、クラスは、あなたがそれを呼びたい文脈で見えるあるclone()
方法を提供することです。そのクラスはhave to
を実装していません。Cloneable
です。 clone()
メソッドを実装して、明示的にnew
を使用し、コンストラクターとセッター呼び出しによって新しいオブジェクトを初期化することができます。 (Cloneable
インタフェースはjava.lang.Object.clone()
方法によって実装デフォルト浅いクローニング機構を可能にする「フラグ」のインタフェースである)クローニングのトピックに関する
クローンを使用することなく、代替案は次のとおり
- 使用します
- 通常のコンストラクタと一連のゲッターとセッター呼び出しを使用するか、またはオブジェクトをシリアライズおよびデシリアライズすることによって
- を呼び出します。
これらのアプローチにはすべて制限があります。例えば適切なコンストラクタ、ゲッター、セッター、または直列化可能性の可用性。最初の2つのアプローチを使用して深いクローンを実装すると、非常にコーディングが集中する可能性があります。最後のアプローチは大幅に高価になる傾向がありますが、複雑なデータ構造の深いコピーを提供するのが一番簡単な方法です。
...私はアプレットでこれをやっているので、ファイルシステムにアクセスするためのアプレットの制限のためにオブジェクトをシリアル化できません。
(ObjectOutputStream
とObjectInputStream
を使用して)Javaオブジェクトのシリアル化とXStream両方において、メモリバッファが付いていストリームにオブジェクトを書き込むことができます。例えばByteArrayOutputStream
。これにより、ファイルシステムにアクセスする必要がなくなり、高速になります。
あなたがしようとしていることに対して[XStream](http://xstream.codehaus.org/)を使用できるかどうかを確認してください。 –
しかし、私はアプレットでこれをやっているので、ファイルシステムにアクセスするアプレットの制限のためにオブジェクトをシリアル化することはできません –
あなたのオブジェクトをCloneableインターフェイスを実装し、独自のディープコピーを実装します。 – Heisenbug