Serialization ArrayList Vide
Bonjour,
Je voudrais créer une classe pour les joueurs dans un jeu, et je voudrais qu'elle soit serializable pour la charger au lancement du jeu et la sauvegarder à la fin.
J'ai mis deux méthodes sauvegarder et restore dans ma classe qui sauvegarde un objet de type Joueurs :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| public void sauvegarder() throws IOException {
FileOutputStream fout = new FileOutputStream(dir + "/scores");
ObjectOutputStream out = new ObjectOutputStream(fout);
out.writeObject(joueurs);
out.close();
}
public void restore() throws IOException, ClassNotFoundException {
FileInputStream fin = new FileInputStream(dir + "/scores");
ObjectInputStream in = new ObjectInputStream(fin);
joueurs = (Joueurs) in.readObject();
in.close();
} |
La classe Joueurs contient un ArrayList de Joueur (Joueurs et Joueur sont sérializable)
J'ai pas d'erreurs d’exécution, mais quand je lis mon fichier sauvegarder il est vide.
Je sais pas ou est ce que j'ai pus faire la boulette ^^, j'ai fais un autre code plus simple ou ça marche mais pas sur celui la.
Merci pour votre aide.
---
Reste du code
GestionJoueurs.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| package ia.reactivite.model.gestionJoueurs;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
public class GestionJoueurs {
private Joueurs joueurs;
private static GestionJoueurs gestionJoueurs;
private String dir;
private GestionJoueurs(String dir) {
this.dir = dir;
joueurs = new Joueurs();
}
public static GestionJoueurs getInstance() {
if (gestionJoueurs == null)
gestionJoueurs = new GestionJoueurs("Reactivity");
return gestionJoueurs;
}
public void addJoueur(Joueur joueur) {
joueurs.addJoueur(joueur);
}
public Joueur getJoueurByName(String nom) {
return joueurs.getJoueurByName(nom);
}
public ArrayList<Joueur> getJoueurs() {
return joueurs.getJoueurs();
}
public void sauvegarder() throws IOException {
FileOutputStream fout = new FileOutputStream(dir + "/scores");
ObjectOutputStream out = new ObjectOutputStream(fout);
out.writeObject(joueurs);
out.close();
}
public void restore() throws IOException, ClassNotFoundException {
FileInputStream fin = new FileInputStream(dir + "/scores");
ObjectInputStream in = new ObjectInputStream(fin);
joueurs = (Joueurs) in.readObject();
in.close();
}
public static class Test {
public static void main(String[] args) {
GestionJoueurs g = GestionJoueurs.getInstance();
Joueur j = new Joueur("A");
j.addScore(12);
g.addJoueur(j);
try {
//g.sauvegarder();
g.restore();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (Joueur a : g.getJoueurs())
System.out.println(a);
}
}
} |
Joueurs.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
package ia.reactivite.model.gestionJoueurs;
import java.io.Serializable;
import java.util.ArrayList;
public class Joueurs implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private static ArrayList<Joueur> joueurs;
public Joueurs() {
joueurs = new ArrayList<Joueur>();
}
public ArrayList<Joueur> getJoueurs() {
return joueurs;
}
public void addJoueur(Joueur joueur) {
if (!joueurs.contains(joueur))
joueurs.add(joueur);
}
public Joueur getJoueurByName(String nom) {
for (Joueur j : joueurs)
if (j.getNom().equals(nom))
return j;
return null;
}
} |
Joueur.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| package ia.reactivite.model.gestionJoueurs;
import java.io.Serializable;
import java.util.ArrayList;
public class Joueur implements Serializable, Comparable<Joueur> {
/**
*
*/
private static final long serialVersionUID = 2L;
private String nom;
private ArrayList<Integer> scores;
public Joueur(String nom) {
this.nom = nom;
scores = new ArrayList<Integer>();
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public ArrayList<Integer> getScores() {
return scores;
}
public void addScore(int score) {
scores.add(score);
}
@Override
public boolean equals(Object o) {
Joueur j = (Joueur) o;
if (j.nom.equals(this.nom))
return true;
return false;
}
@Override
public int compareTo(Joueur o) {
if (this.nom.compareTo(o.nom) > 0)
return -1;
else if (this.nom.compareTo(o.nom) < 0)
return 1;
return 0;
}
@Override
public String toString()
{
return nom;
}
} |