Java HashMap - copie en profondeur
Je suis juste essayer de trouver la meilleure solution comment faire pour faire une copie de HashMap
. Il n'y a pas d'objets dans cette carte qui mettent en œuvre Cloneable
. Je voudrais trouver la meilleure solution de sérialisation et de désérialisation.
Donc c'est plus une question de comment cloner des nations unies-clonable objets? La table de hachage semble être un détail mineur qui pourraient être résolus par la simple récursivité
Dont les classes d'objets sont-ils? Si votre propre, il suffit d'ajouter Clonable.
Essayer de cloner les objets qui ne sont pas Clonable est une nette odeur de code. Ce sera un bon moment pour envisager de refactoring.
si vous n'avez aucune idée de ce que les objets sont, ensuite, ça sent l': vous ne pouvez pas garantir que vous serez en mesure de cloner: ce que l'objet est titulaire d'un
Il y a des objets qui sont spécifiquement conçus de sorte que vous ne pouvez pas obtenir plus d'un d'entre eux. Vous pas de faire des copies d'objets arbitraires. Trouver un autre moyen.
Dont les classes d'objets sont-ils? Si votre propre, il suffit d'ajouter Clonable.
Essayer de cloner les objets qui ne sont pas Clonable est une nette odeur de code. Ce sera un bon moment pour envisager de refactoring.
si vous n'avez aucune idée de ce que les objets sont, ensuite, ça sent l': vous ne pouvez pas garantir que vous serez en mesure de cloner: ce que l'objet est titulaire d'un
transient
de propriété, ou un stream
, etc...Il y a des objets qui sont spécifiquement conçus de sorte que vous ne pouvez pas obtenir plus d'un d'entre eux. Vous pas de faire des copies d'objets arbitraires. Trouver un autre moyen.
OriginalL'auteur Smolda | 2012-10-24
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à Profonde Clonage, sur Google Code, vous pouvez trouver une bibliothèque. Vous pouvez le lire sur https://github.com/kostaskougios/cloning.
Comment il fonctionne, c'est facile. Cela peut cloner n'importe quel objet, et l'objet ne pas avoir à mettre en œuvre toutes les interfaces, comme serializable.
Être conscient que: cela peut cloner des milliers d'objets (si l'objet cloné a le nombre de références). Aussi, la copie de Fichiers ou de Flux peut se bloquer la JVM.
Vous pouvez, cependant, ignorer certaines instances de classes, comme les ruisseaux et cetera. Il vaut la peine de vérifier cette bibliothèque et de sa source.
cloner.deepClone(Object1);
, il copie en profondeur?Oui, il copie tout.
Quelle merveilleuse bibliothèque!
OriginalL'auteur
Je ne pense pas qu'il peut être mis en œuvre de manière générique.
Pour l'instant, j'avais propose de ré-écrire votre question dans moins de manière générale
OriginalL'auteur