Étant l'un des langages de programmation les plus utilisés, Java est doté d'un large éventail de fonctionnalités et de fonctions. Un objet en Java est utilisé pour accomplir la tâche ; vous créez des objets, modifiez, déplacez, appelez leurs méthodes respectives, etc. Comme nous le savons tous, les références aux objets sont stockées en Java. Ainsi, lorsque nous avons deux références pointant vers le même objet, les changements chez l’un seront complètement reflétés dans les mêmes changements chez l’autre. Or, ce facteur peut ne pas jouer en notre faveur à chaque fois, le clonage est donc la solution pour empêcher de telles situations. En d'autres termes, créer une réplique exacte de tels objets est connu sous le nom de clonage d'objets en Java.
Commencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Par définition, le clonage d'objets est le processus de création d'une copie exacte d'un objet original avec un état similaire. Lors du clonage, toutes les propriétés sont transférées à l'objet nouvellement cloné, mais ces propriétés peuvent être modifiées ou manipulées selon les besoins. La méthode clone() doit être définie dans la classe Object. Implémentation de java.lang.Une interface clonable est obligatoire pour la classe où nous avons l'intention de cloner l'objet. En cas d'échec de la mise en œuvre de l'interface Cloneable, une exception sera levée. Voyons maintenant la syntaxe du clonage d'objets.
Syntaxe :
protected Object clone() throws CloneNotSupportedException
Pour la classe Object, des opérations de clonage spécifiques sont effectuées par la méthode clone. Cette méthode créera une copie exacte de la classe et initialisera tous les champs avec le contenu des champs de l'objet. Si l'interface Cloneable n'est pas implémentée par la classe de l'objet mentionné, elle lancera « CloneNotSupportedException ». Tous les tableaux sont considérés comme implémentant l’interface Cloneable. Ici, l'interface Cloneable n'est pas implémentée sur la classe Object. Ainsi, lorsque nous appelons la méthode clone sur un objet, elle génère une erreur d'exécution.
Comprenons maintenant le fonctionnement de la méthode clone() par démonstration.
Code :
class obj_clone implements Cloneable{ int phone_code; String f_name; obj_clone(int phone_code,String f_name){ this.phone_code=phone_code; this.f_name=f_name; } public Object clone()throws CloneNotSupportedException{ return super.clone(); } public static void main(String args[]){ try{ obj_clone s1=new obj_clone(99,"sulaksh"); obj_clone s2=(obj_clone)s1.clone(); System.out.println(s1.phone_code+" "+s1.f_name); System.out.println(s2.phone_code+" "+s2.f_name); }catch(CloneNotSupportedException c){} } }
Explication du code : Comme vous pouvez le voir, nous avons initialisé notre classe et implémenté cloneable. Ici, il est vérifié si la classe réelle implémente le cloneable, avec clone() dans l'objet, puis elle procède à la création d'une copie. Ensuite, nous avons notre numéro de téléphone à deux variables avec le type de données entier et notre prénom avec le type de données chaîne. Nous avons ensuite créé un constructeur de notre classe obj_clone ainsi que les variables avec le mot-clé .this. Comme vous pouvez le voir, nous avons notre objet avec la méthode clone() et l'exception CloneNotSupportedException, dont nous avons discuté précédemment. De plus, super.clone() ici générera probablement l'erreur CloneNotSupportedException, que nous avons détectée plus tard.
Ensuite, nous avons notre classe principale et nous avons utilisé un try-catch pour tout ce qu'elle contient. Nous avons ensuite créé un objet de notre classe comme s1 et s2. Nous avons passé les deux paramètres pour s1, notre premier objet, puis nous avons implémenté la méthode clone() pour cloner s1 en s2. Enfin, nous avons deux instructions d'impression de sortie. Hors du bloc try, nous avons notre bloc catch à l’exception évoquée précédemment. Sur la 8ème ligne de l'exemple, nous avons implémenté le clone() comme mentionné et expliqué dans la partie syntaxe. Lors de l'exécution, le programme ci-dessus imprimera le résultat sous la forme « 99sulaksh 99sulaksh ». Pour la sortie, reportez-vous à la capture d'écran ci-jointe.
Sortie :
Maintenant que nous avons compris ce qu'est le clonage d'objets et comment il est effectué, comprenons quels sont les types de clonage pris en charge par Java.
Maintenant, comprenons les avantages et les inconvénients du clonage d'objets.
Comprenant que tout ou chaque méthode a ses propres limites et fonctions, voici les avantages du clonage.
Comme mentionné précédemment, chaque méthode a ses limites et ses fonctions, comprenons maintenant les inconvénients de Clone().
Avec une bonne compréhension des avantages et des inconvénients de clone() ou de toute autre méthode, la mise en œuvre de méthodes et de fonctions aussi merveilleuses peut grandement bénéficier au programmeur.
Nous avons compris ce qu'est clone(), ses fonctionnalités et ses utilisations. Différence entre le clonage profond et superficiel, ainsi que le clonage paresseux. Le clonage superficiel copie uniquement les champs tandis que le clonage profond copie les champs et les valeurs et peut être implémenté selon les besoins. Alors que Lazy Copy est une combinaison des deux. Nous avons également compris les avantages et les inconvénients des clones ().
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!