IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[Concept] Clonage


Sujet :

Langage Java

  1. #1
    Membre habitué Avatar de XristofGreek
    Inscrit en
    Août 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 164
    Points : 174
    Points
    174
    Par défaut [Concept] Clonage
    Bonjour,

    Après lecture de http://java.sun.com/j2se/1.4.2/docs/...t.html#clone(), J'aimerais un eclaircissement sur object.clone(), En effet n'est il pas identique de faire :
    et Bref, je comprend pas bien l'intéret de cette méthode.
    les gens qui s'ennuient sont des gens sans imagination.

  2. #2
    Membre confirmé

    Inscrit en
    Juillet 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 116
    Points : 514
    Points
    514
    Par défaut
    Ce n'est pas du tout la même chose ...
    clone() crée un nouvel Objet en mémoire qui est identique à l'Objet original (donc de même structure contenant les mêmes valeurs).

    Ainsi les références b et a ne pointent pas vers la même structure mais sur 2 structures identiques contenant des valeurs identiques.
    Ainsi si tu modifie un champs de l'objet a, cela ne modifie pas le champs de l'Objet b.

    Alors qu'avec l'égalité b=a, la modification sera effective pour les deux.

    Pour mieux expliquer, voici un exemple de ce que fais la méthode clone() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public class Message 
    {
    	private String texte;
     
    	public Message(String t)
    	{
    		texte=t;
    	}
     
    	public String getTexte() {return texte;}
    	public void setTexte(String t) { texte=t; }
     
    	public Object clone() throws CloneNotSupportedException
    	{
    		return new Message(texte);
    	}
    }

  3. #3
    Membre éprouvé
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Points : 1 246
    Points
    1 246
    Par défaut
    Attention le clonage n'est pas aussi simple, en effet java distingue dans sa documentation deux types de clonage
    shallow copy
    deep copy

    Avec un clonage du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    A original = new A();
    A clone = (A) original.clone();
    nous n'effectuons qu'un clonage de surface, en attribuant à la classe A quelques attributs, vous constaterez que les valeurs se trouvent conservées dans le clone. C'est même pire car la modification des attributs de clone peut engendré la modification de ceux de original

    Une deep copy consiste à créer une copy exacte de l'objet en clonant également ses attributs gràce au principe de sérialisation....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Concept] Métadatas ?
    Par melinda dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 10/11/2004, 11h56
  2. [Concept] Réplication
    Par melinda dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 31/03/2003, 17h29
  3. [Concept] BD ou Gestion par fichier. Intérêt de la BD ?
    Par Cian dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/11/2002, 12h16
  4. [Concept] Curseur coté client et curseur coté serveur
    Par freud dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/09/2002, 22h13
  5. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo