Maison  >  Article  >  Java  >  Partager des exemples d'utilisation de clone() en Java

Partager des exemples d'utilisation de clone() en Java

黄舟
黄舟original
2017-09-28 09:38:311427parcourir

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
1
Lorsque 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn