clonage d'un class avec une ArrayList

clonage d'un class avec une ArrayList - Java - Programmation

Marsh Posté le 12-01-2006 à 15:51:09    

Boujour(bonsoir!) les gens!
 
Voila, j'ai la class suivante (version simplifiée)
 

Code :
  1. public abstract class Courbe implements Cloneable{
  2. /**Liste des PointMesure représentant la courbe*/
  3. protected ArrayList<PointMesure> listePoint;
  4. /**construit un objet courbe*/
  5. public Courbe() {
  6.  listePoint = new ArrayList<PointMesure>();
  7. }
  8. public void addPoint(PointMesure pm) {
  9.  listePoint.add(pm);
  10. }
  11. /**methode clone*/
  12. public Object clone(){
  13.  Object o = null;
  14.  try {
  15.   o = super.clone();
  16.   (Courbe)o.listePoint = this.listePoint.clone();
  17.   for(int i; i<(Courbe)o.listePoint.size(); i++)
  18.    (Courbe)o.listePoint.set(i, ((PointMesure)this.listePoint.get(i)).clone());
  19.  } catch(CloneNotSupportedException e) {
  20.   System.err.println("MyObject can't clone" );
  21.  }
  22.  return o;
  23. }
  24. }


 
Le probleme se situe au niveau du clonage de l'ArrayList : je n'arrive pas à sélectionner l'ArrayList de l'objet o clone pour la modifier. La syntaxe: "(Courbe)o.listePoint" ne compile pas; il ne detecte pas l'ArrayList listePoint.
 
Du coup, je ne sais pas comment faire une copie profonde de ma class.
 
Merci

Reply

Marsh Posté le 12-01-2006 à 15:51:09   

Reply

Marsh Posté le 12-01-2006 à 15:59:46    

((Courbe)o).listePoint ça me paraît mieux, non ?

Reply

Marsh Posté le 12-01-2006 à 16:09:05    

C'est bien compliqué comme code :/
 
Pourquoi ne pas créer un constructeur par recopie et construire un nouvel objet grâce à lui dans clone()?
 
Et tu devrais également utiliser la syntaxe foreach, vu que tu as l'air d'être en java5.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-01-2006 à 16:16:26    

frabill a écrit :

((Courbe)o).listePoint ça me paraît mieux, non ?


 
oups!!!!
Ca marche mieu...
[:anauff]
 
[:athome]
 
(J'ai du mal moi en ce moment, mais vraiment...)
 

Citation :


C'est bien compliqué comme code :/
 
Pourquoi ne pas créer un constructeur par recopie et construire un nouvel objet grâce à lui dans clone()?
 
Et tu devrais également utiliser la syntaxe foreach, vu que tu as l'air d'être en java.


 
 
ban, dans clone, je ne peux pas faire appelle au constructeur de la classe étant donné que celle-ci est abstraite.
Sinon, je connai pas foreach, vais me renseigner.
 
Merci!
 
 

Reply

Marsh Posté le 12-01-2006 à 17:05:08    

http://java.sun.com/j2se/1.5.0/doc [...] reach.html


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-01-2006 à 19:34:22    

/**construit un objet courbe*/
    public Courbe() {
 


    /**methode clone*/
    public Object clone(){


 
[:toto le hros] :D :D :D


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 12-01-2006 à 19:47:25    

the real moins moins a écrit :

/**construit un objet courbe*/
    public Courbe() {
 


    /**methode clone*/
    public Object clone(){


 
[:toto le hros] :D :D :D


 
au moins avec des commentaires comme ça,  il ne peut pas y avoir d'ambiguïté  :o

Reply

Marsh Posté le 13-01-2006 à 15:20:27    

the real moins moins a écrit :

/**construit un objet courbe*/
    public Courbe() {
 


    /**methode clone*/
    public Object clone(){


 
[:toto le hros] :D :D :D


 
 
Heu... Surement que j'ai fais une connerie quelque pars, mais dans ce cas la, soit gentils de me l'indiquer aprés t'être moqué de moi! merci...

Reply

Marsh Posté le 13-01-2006 à 15:25:33    

blaise_laporte a écrit :

Heu... Surement que j'ai fais une connerie quelque pars, mais dans ce cas la, soit gentils de me l'indiquer aprés t'être moqué de moi! merci...


the real moins moins a écrit :

/**construit un objet courbe*/
    public Courbe() {
 
 
    /**methode clone*/
    public Object clone(){
 
[:toto le hros] :D :D :D


C'est plus clair?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-01-2006 à 15:25:47    

non tu n'as pas fait d'erreur, c'est juste que les commentaires dans ton code n'apportent aucune information :D
 
edit : ha mince j'avais pas fait gaffe au clone


Message édité par frabill le 13-01-2006 à 15:27:04
Reply

Marsh Posté le 13-01-2006 à 15:25:47   

Reply

Marsh Posté le 13-01-2006 à 15:36:15    

Et qu'est-ce qu'il a le clone()?

Reply

Marsh Posté le 13-01-2006 à 18:30:38    

oui non euh, le clone est bien, c'etait rapport a la javadoc plus qu'inutile, ma remarque  [:icon12]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed