J'ai fait un rapide google sur la mise en œuvre de clone() en Java, et trouve: http://www.javapractices.com/topic/TopicAction.do?Id=71
Il a le commentaire suivant:
copie des constructeurs statiques et méthodes de fabrique de fournir une alternative à cloner, et sont beaucoup plus faciles à mettre en œuvre.
Tout ce que je veux faire est de faire une copie en profondeur. La mise en œuvre de clone() semble faire beaucoup de sens, mais cette hautement google classé article me fait un peu peur.
Voici les questions que j'ai remarqué:
Copier les constructeurs ne fonctionnent pas avec les médicaments Génériques.
Voici quelques pseudo-code qui ne compile pas.
public class MyClass<T>{
..
public void copyData(T data){
T copy=new T(data);//This isn't going to work.
}
..
}
Exemple 1: Utilisation d'un constructeur de copie dans une classe générique.
Usine méthodes n'ont pas de noms standard.
C'est bien beau d'avoir une interface de code réutilisable.
public class MyClass<T>{
..
public void copyData(T data){
T copy=data.clone();//Throws an exception if the input was not cloneable
}
..
}
Exemple 2: Utilisation d'un clone() dans une classe générique.
J'ai remarqué que le clone n'est pas une méthode statique, mais ne serait-il pas être encore nécessaire pour faire de profondeur des copies de tous les champs protégés? Lors de la mise en œuvre de clone(), l'effort supplémentaire pour lancer des exceptions à la non-clonable sous-classes qui semble insignifiant pour moi.
Ai-je raté quelque chose? Toutes les suggestions seraient appréciées.