3 votes

Copie profonde d'un objet java avec tous ses sous-objets

Je veux trouver un moyen efficace de cloner un grand objet système (système planétaire dans mon cas) avec tous ses sous-objets. Les sous-objets ont des coordonnées et des choses comme ça, des planètes, etc. Donc une copie profonde, je suppose

J'ai essayé le clonage et quelques hacks sérialisables, mais cela ne semble pas fonctionner, les attributs des sous-objets de la copie ne sont pas restés constants. J'ai essayé d'imprimer les coordonnées de certaines planètes de la copie après avoir fait la copie et les planètes ont continué à orbiter.

Mon objectif principal est de sauvegarder l'état actuel des positions, états, etc. de tous les objets du système et d'y revenir à tout moment après la copie. J'espère que je n'ai pas mal compris quelque chose

1voto

Xeon Points 3661

Si vous devez faire persister vos objets et restaurer leur état ultérieurement, vous devez utiliser la sérialisation java ou par exemple db4o (c'est très facile à utiliser).

La sérialisation devrait aussi fonctionner - chaque classe que vous agrégez dans votre "univers" (et l'"univers" lui-même) devrait implémenter l'interface Serializable, et tout champ que vous ne voulez pas sérialiser devrait être marqué comme transient .

1voto

Jere Points 386

Une approche que j'ai utilisée est d'utiliser le paquet xstream de Codehaus ( http://x-stream.github.io/ ) pour sérialiser/désérialiser directement. Quelque chose comme :

XStream xs = new XStream();
MyObjectTree to;

 ///from is an instance of MyObjectTree
to = (MyObjectTree)xs.fromXML(xs.toXML(from));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X