Clonage de bonne pratique dans ce cas? Comment le faire mieux?
4 Réponses :
i chose que c'est comme avec tout ce qui est dans la programmation: cela dépend de la spécificité de l'objet. P>
Essayez de faire un test vraiment rapide: Clone 100000 objets et instancie la même quantité d'objets et le temps de lecture combien de temps il faut (System.currenttimeInmilis ()). Souvent, le clone est plus rapide. P>
et rappelez-vous qu'avec le clone, il y a un problème - lors de l'ajout d'un nouveau champ, etc., vous devez modifier la méthode clone () également. P>
Oh, modifiez la méthode du clone? Est-ce nécessaire? Je pensais que ceci est juste une méthode agissant comme un constructeur, ce qui n'est pas nécessaire.
Si vous n'êtes pas implémenter clone code> dans vos classes, vous obtiendrez un
clonenotsupportedexception code> jeté lorsque vous l'appelez.
Clonage est rarement une bonne idée en Java. Essayez d'autres techniques telles que des constructeurs de copies ou des méthodes d'usine.
Vous pouvez également avoir des méthodes de copie partielle: Public withbar (String Newbar) {Retour Nouveau FOO (Newbar, this.baz); } code>
Vous voulez dire la méthode statique de l'usine et non la méthode d'usine, qui pourrait être confondue avec le motif de la méthode d'usine
Alors, il faut que l'on évite les prototypes?
Vous pouvez utiliser un constructeur de copie au lieu d'implémenter Clonable CODE>
, mais on dirait que vous avez une hiérarchie de classes code> Modelentry code>, vous utilisez donc le clone code> peut être la meilleure approche. Voir Cette question pour certains pointeurs sur ce qui ne va pas avec clonable Code> p>
Clone n'est pas une bonne idée que de nombreux programmeurs sont d'accord. P>
C'est sujet d'erreur. Vous devez remplacer clone () code> soigneusement.Porgeting d'invoquer
super.clone () code> est un bogue populaire. P>
' dans ce cas?' pouvez-vous l'élaborer
Dites-nous plus pourquoi vous devez cloner cet objet en premier lieu.
Parce que je veux terminer une collection contenant des modèles.
Question connexe: Stackoverflow.com/ Questions / 1106102 / ...