Bonjour à tous,
Je suis confronté à un problème avec le passage des paramètres par valeur et référence, j'ai lu qu'il ne pouvait y avoir que ces 2 types de passage en java : pour les variables primitives => par valeur et pour el reste (les objets) => par références.
Mais mon problème survient lors de la sauvgarde des objets...
Je prends un exemple pour y voir plus clair :
Je créer une classe Piece (d'un jeu d'echec) qui aura les champs suivants (je ne décrit pas les méthode) :
-> boolean estBlanc;
-> int type;
-> JPanel image;
Ensuite je créer une classe qui permet de faire la sauvegarde dans un fichier, et je créer la méthode suivante :
vu que unePiece est passé par référence, ce n'est qu'un alias qui est sauvegardé dans l'ArrayList, donc quand je récupère la sauvegarde, je ne récupère que des valeurs nulls.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void save(Piece unePiece) { // ici j'ajoute unePiece à une ArrayList qui est membre de la classe de sauvegarde }
Même en faisant cela :
Cela ne fonctionne pas, car p est aussi un alias de unePiece.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public void save(Piece unePiece) { Piece p = unePiece; // ici j'ajoute p à une ArrayList qui est membre de la classe de sauvegarde }
Et je suis forcé de faire :
et là ça focntionne bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public void save(Piece unePiece) { Piece p = new Piece(); p.estBleu = unePiece.estBleu; p.type = unePiece.type; p.image = unePiece.image; // ici j'ajoute p à une ArrayList qui est membre de la classe de sauvegarde }
Donc ma question est simple, suis-je à chaque fois obligé de recopier chaque champ de ma classe pour pouvoir faire la sauvegarde, ou est ce qu'il existe un moyen plus rapide pour faire uen sauvegarde non pas de l'alias ou de la référence mais de l'objet en lui même.
Merci pour vos réponses et bravo à ceux qui se sont lancé dans cette lecture^^
Partager