Cet article présente principalement des informations pertinentes sur l'utilisation de clone() en java. J'espère que cet article pourra aider tout le monde à maîtriser la méthode de clonage de clone(). Les amis dans le besoin pourront s'y référer
Comment utiliser clone() en java
Avant-propos :
Clone copie. En langage Java, la méthode clone est appelée par l'objet, donc. il sera copié l'objet. Pour copier un objet, vous devez d'abord allouer un espace de même taille que l'objet source et créer un nouvel objet dans cet espace. Ainsi dans le langage java, il y a :1 Utiliser l'opérateur new pour créer un objet
2 Utiliser la méthode clone pour copier un object
Alors quelles sont les similitudes et les différences entre ces deux méthodes ? L'intention initiale du nouvel opérateur est d'allouer de la mémoire. Lorsque le programme exécute l'opérateur new, il examine d'abord le type derrière l'opérateur new, car ce n'est qu'en connaissant le type que nous pouvons savoir combien d'espace mémoire allouer. Après avoir alloué la mémoire, appelez le constructeur pour remplir chaque champ de l'objet. Cette étape est appelée initialisation de l'objet. Après le retour du constructeur, un objet est créé et sa référence (adresse) peut être publiée à l'extérieur, où elle peut être. utilisé. Cette référence manipule l’objet. La première étape de clone est similaire à new. Elle alloue de la mémoire lorsque la méthode clone est appelée, la mémoire allouée est la même que celle de l'objet source (c'est-à-dire l'objet qui appelle la méthode clone), puis les champs correspondants. l'objet d'origine est utilisé pour remplir le champ Une fois le champ du nouvel objet rempli, la méthode clone revient, un nouvel objet identique est créé, et la référence de ce nouvel objet peut également être publiée vers l'extérieur.package test; public class Cloneoo { public static void main(String[] args) { test t=new test(); t.changeInt(); System.out.println(t); try { test t1=(test) t.clone();//创建 System.out.println(t1); System.out.println(t1.getI()); } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class test implements Cloneable{ private int i=0; public void setI(int i) { this.i = i; } public int getI() { return i; } public void changeInt(){ this.i=1; } @Override protected Object clone() throws CloneNotSupportedException { // TODO Auto-generated method stub test t=null; t=(test) super.clone(); return t; } }
test.test@15db9742 test.test@6d06d69c 1Lorsque la classe contient des objets, nous devons effectuer une copie approfondie, c'est-à-dire après en copiant l'objet, précipitez-vous pour appeler la méthode clone sur les attributs de type non basiques de l'objet pour terminer la copie complète.
La méthode clone effectue une copie superficielle
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!