Problème d'affectation d'un objet de type arraylist [Résolu]

Messages postés
1
Date d'inscription
mardi 14 avril 2009
Dernière intervention
9 avril 2011
- 9 avril 2011 à 20:51 - Dernière réponse :
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 10 avril 2011 à 07:23
Bonsoir,
SVP j'ai un problème dans Arraylist de java,
quand je veux affecter à un objet C à un autre objet O de type arraylist après les modifications dans C , O aussi se change par exemple j'ai:
TextCode=ConnaissanceCollective.get(index).solution;
si je fais des modifications sur "TexteCode" je vois que "ConnaissanceCollective.get(index).solution" se change aussi

SVP quelqu'un peut m'aider, comment faire l'affectation?
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 10 avril 2011 à 07:23
3
Merci
Java utilise des références, donc quand tu tapes TextCode=ConnaissanceCollective.get(index).solution; TextCode contient une référence vers l'objet ConnaissanceCollective.get(index).solution si tu le modifie tu modifie également l'objet de la liste puisque dans la liste, tu as une référence vers le même objet

Normalement, tu ne devrais pas avoir besoin de récupérer une copie de ton objet, tu dois pouvoir faire autrement, cependant, si tu as vraiment besoin de récupérer une copie de ton obket, implémente dans chacune des classes la méthode clone.

Et dans cette méthode clone, if faut que tu créé un nouvel objet à partir de l'objet courant, mais attention, tout est référence sauf les types primitifs (int, boolean, char, tout ceux qui commencent par une minuscule)

Par exemple pour connaissanceCollective :
     public ConnaissanceCollective clone(){
          //Je ne connais pas tous les attributs
          return new ConnaissanceCollective(solution.clone());
     }


Solution est un objet, donc, tu ne résoudra ton problème qu'en écrivant une méthode clone pour la classes solution, là, je ne sais pas ce que contient la classes solution, pour te donner un exemple, je vais imaginer qu'elle contient deux variables : var1 de type String et var2 de type int

     public Solution clone(){
          //Il faudrait vérifier que la fonctin clone de String fonctionne bien
          return new Solution(var1.clone(), var2);
     }


Pour plus d'info sur la facon de bien utiliser clone http://ydisanto.developpez.com/tutoriels/j2se/cloneable/


Une dernière remarque, essaye de te passer de la définition de ces méthodes clone, il y a certainement un moyen, les méthodes clone sont assez difficiles et lourdes à implémenter, en effet, elles supportent mal l'héritage, il faut les redéfinir à chaque fois.


Donne nous ton code si tu n'arrives pas à t'en passer...

Bonne chance

Merci cs_Julien39 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_Julien39

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.