Comment utiliser la méthode de clonage pour créer une copie superficielle en java

La cloner méthode en Java crée manuellement une copie de l'objet original et le renvoie. Dans de nombreux cas, cela est la meilleure façon de créer un clone. Mais que faire si votre classe a une centaine ou plusieurs champs qui doivent être dupliqués?

La chance d'oublier de copier l'un des champs est élevé, et si vous ajoutez un champ à la classe plus tard, vous risquez d'oublier de modifier la cloner méthode pour inclure le nouveau champ. Heureusement, vous pouvez résoudre ce problème en utilisant le cloner Procédé selon la Objet classe directement dans votre propre cloner Procédé.

La cloner Procédé selon la Objet classe peut créer automatiquement une copie de votre objet qui contient des doublons de tous les champs qui sont des types primitifs (tels que int et double), Ainsi que des copies de types de référence immuables - notamment, les chaînes. Donc, si tous les champs de votre classe sont des primitives ou des chaînes, vous pouvez utiliser la cloner Procédé fournies par le Objet classe de cloner votre classe.




Ce type de clone est connu comme un copie superficielle.

Pour appeler le cloner méthode à partir de votre propre cloner méthode, il suffit de spécifier super.clone (). Avant que vous pouvez faire cela, cependant, vous devez faire deux choses:

  • Déclarer que la classe prend en charge la Cloneable interface. La Cloneable est une interface de marquage qui ne fournit pas toutes les méthodes. Elle marque simplement une classe comme étant appropriée pour le clonage.

  • Joindre l'appel à super.clone () dans un try / catch déclaration qui attire l'exception CloneNotSupportedException. Cette exception est levée si vous essayez d'appeler cloner sur une classe qui ne met pas la Cloneable interface. Pourvu que vous implémentez Cloneable, cette exception ne sera plus jamais se produire, mais parce CloneNotSupportedException est une exception vérifiée, vous devez l'attraper.

Voici un exemple d'une Employé classe avec un procédé de clonage qui utilise super.clone () à cloner elle-même:

Employé de classe implémente Cloneable {// champs et méthodes omises ... clone public Object () {Employé emp-try {emp = (employés) super.clone () -} catch (e CloneNotSupportedException) {return null-// ne sera jamais } return arriver EMP}}

Notez que cette méthode ne doit pas être au courant d'aucun des champs déclarés dans le Employé classe. Ce cloner méthode, cependant, ne fonctionne que pour les classes dont les champs sont tous soit des types primitifs ou des objets immuables tels que des cordes.


» » » » Comment utiliser la méthode de clonage pour créer une copie superficielle en java