3

大きなシステム オブジェクト (私の場合は惑星系) とそのすべてのサブオブジェクトを効率的に複製する方法を見つけたいと考えています。サブオブジェクトには、惑星などの座標などがあります。したがって、深いコピーだと思います..

クローン作成といくつかのシリアル化可能なハックを試みましたが、機能していないようでした。コピーを作成した後、コピーの特定の惑星座標を印刷しようとしたため、コピーのサブオブジェクト属性は一定のままではなく、惑星は周回を続けました。

私の主な目標は、システム全体のオブジェクトの位置、状態などの現在の状態を保存し、コピーが作成された後、いつでも元の状態に戻すことです。私が何も誤解していないことを願っています..

4

2 に答える 2

1

オブジェクトを永続化し、後で状態を復元する必要がある場合は、Java シリアル化またはたとえばdb4oを使用する必要があります(これは非常に使いやすいです)。

シリアル化も機能する必要があります-「ユニバース」(および「ユニバース」自体)に集約するすべてのクラスは、Serializable インターフェイスを実装する必要があり、シリアル化したくないフィールドは としてマークする必要がありますtransient

于 2012-05-31T19:28:23.800 に答える
1

私が使用したアプローチの 1 つは、Codehaus ( http://x-stream.github.io/ ) の xstream パッケージを使用して、直接シリアライズ/デシリアライズすることです。何かのようなもの:

XStream xs = new XStream();
MyObjectTree to;

 ///from is an instance of MyObjectTree
to = (MyObjectTree)xs.fromXML(xs.toXML(from));
于 2012-05-31T20:26:39.810 に答える