clone() [partielement resolu] [java] - Java - Programmation
Marsh Posté le 11-04-2005 à 02:06:10
Bon j ai reussi a trouver une maniere de faire.
Je la poste pour si certaines personnes sont interessées.
Si vous avez une meilleure solution n'hesitez pas a laposter s'il vous plait.
Dans la class solution je rajoute un constructeur :
public Solution(Solution sol) {
this.attribut1=(sol.attribut1).clone();
...
this.attributN=(sol.attributN).clone();
}
ainsi pour copier il suffit de faire :
Solution temp=new Solution(courant);
Remarque : les attributs doivent etre clonable et donc leurs classes doivent implementer l'interface cloneable.
Voila, je me doute qu'il y a des meilleures facons de faire, ainsi si vous en connaissez unejesuis preneur.
Cordialement.
Marsh Posté le 11-04-2005 à 09:00:09
Quand on fait des maths, en général on fait des objets non-modifiables et on en construit des nouveaux possédant les nouvelles caractéristiques au fur-et-à-mesure du déroulement de l'algorithme.
Comme en maths quoi ...
Marsh Posté le 11-04-2005 à 01:28:49
Bonjour a tous,
J'ai un petit probleme :
J ai une classe Solution (qui determine le type de structure d'un objet solution).
"v" et "courant" son de type Solution.
J ai une classe Algorithme.
Dans cette classe, j ai une methode A qui a un moment donné fait :
v=getNextVoisin(courant);
La methode getNextVoisin(courant) fait :
Solution temp = courant;
modifit temp
et renvoit temp.
mon probleme c'est que ca modifit en meme temps que "temp" l'objet "courant"
Hors je voudrais juste copier le contenu de "courant" dans "temp".
J ai essayé :
-----------------------------------------------
Solution temp = (Solution)courant.clone()
mais clone est une methode protected et je ne peux pas l 'appeler.
--------------------------------------------------
La meme chose qu'avant mais avec :
package Coucou;
en entete de tous mes .java
ca marche pas clone() ne veut toujorus pas se lancer.
--------------------------------------------------
faire implementer l'interface Cloneable a la classe Solution et lui ajouter la methode :
public getCopy() {
try{
return (Solution)this.clone();
}catch(java.lang.CloneNotSupportedException e){return null;}
}
Ca marche pas, ca fait comme si j avais rien fait du tout et j 'ai toujorus le meme probleme.
------------------------------------------
La meme chose sans implémenter l'interface Cloneable,
ca marchepas ca renvoit toujours l'exception java.lang.CloneNotSupportedException et donc ca renvoit null a chaque fois.
------------------------------------------
voila j'ai plus d'idée ... si quelqu'un sait comment on peut copier le contenu d'un objet dans un autre ca me serait bien utile
Merci d'avance.
Message édité par patastronch le 11-04-2005 à 02:11:36