Java: solution recommandée pour la profondeur de clonage et de la copie d'une instance

Je me demandais si il est recommandé de faire une profonde clone/copie de l'instance de java.

J'ai 3 solutions à l'esprit, mais je peux l'avoir à manquer, et j'aimerais avoir votre avis

edit: inclure Bohzo propositon et d'affiner la question: c'est plus profond que le clonage peu profonde clonage.

Le faire vous-même:

code le clone en main propriétés propriétés et vérifiez que mutable instances sont clonés trop.

pro:

- le contrôle de ce que sera effectué

- la rapidité d'exécution

contre:

- fastidieux à écrire et à maintenir

- correction d'un bug ventral (copier/coller de l'échec, manque de propriété, réaffectés mutable propriété)

Utiliser la réflexion:

Avec vos propres outils de réflexion ou externe avec une aide (comme jakarta commun-les haricots), il est facile d'écrire une copie générique de la méthode qui va faire le travail en une seule ligne.

pro:

- facile à écrire

- sans entretien

contre:

- moins de contrôle sur ce qui se passe

- correction d'un bug sujets avec mutable objet si l'instrument de réflexion à ne pas clone sous les objets trop

- ralentissement de l'exécution

Utiliser clone cadre:

Utiliser un framework qui le font pour vous, comme :

commons-lang SerializationUtils

Java Profonde Clonage De La Bibliothèque

Dozer

Kryo

pro:

- de même que la réflexion

- plus de contrôle sur ce que sera exactement être cloné.

contre:

- chaque mutable instance est complètement cloné, même à la fin de la hiérarchie

- peut être très lente à exécuter

Utilisation instrumentation du bytecode pour écrire clone au moment de l'exécution

javassit, BCEL ou cglib peut être utiliser pour générer un dédié cloner aussi rapide qu'une main écrits. Quelqu'un connait une lib à l'aide de l'un de ces outils pour cela ?

Ce que j'ai raté ici ?

Qu'on vous recommande ?

Grâce.

  • apparemment Java Profonde Clonage de la Bibliothèque a déménagé ici : code.google.com/p/cloning
InformationsquelleAutor Guillaume | 2010-01-28