Hamster18
Messages postés178Date d'inscriptionmercredi 2 janvier 2019StatutMembreDernière intervention22 janvier 2024
-
Modifié le 14 déc. 2019 à 20:26
Hamster18
Messages postés178Date d'inscriptionmercredi 2 janvier 2019StatutMembreDernière intervention22 janvier 2024
-
28 déc. 2019 à 19:56
Bonjour, je crée actuellement une application javafx, et je suis bloqué sur la sérialisation. J'essaye de sérialiser une classe qui est une liste de joueur comme suit :
public class ListeJoueurs implements Serializable {
private static ObservableList<Joueur> listJoueurObs = FXCollections.observableArrayList();
private static ListProperty<Joueur> listJoueur = new SimpleListProperty<>(listJoueurObs);
public ObservableList<Joueur> getListJoueur() {return listJoueur.get();}
public void setListJoueur(ObservableList<Joueur> value) {listJoueur.set(value);}
public static ListProperty<Joueur> listJoueurProperty() {return listJoueur; }
private static Manageur manageur = new Manageur();
static {
listJoueurObs.add(new Joueur("cloclo"));
listJoueurObs.add(new Joueur("hamster18"));
listJoueurObs.add(new Joueur("Alex"));
}
protected void ajouter (Joueur joueur){
listJoueurObs.add(joueur);
}
public void supp (){
int i;
for(i=0; i<=listJoueurObs.size(); i++)
listJoueurObs.remove(listJoueurObs.get(i));
}
La classe joueur est comme ceci :
public class Joueur implements Serializable {
private final StringProperty surname = new SimpleStringProperty();
public String getSurname() {return surname.get();}
public void setSurname(String valeur) {surname.set(valeur);}
public StringProperty surnameProperty() {return surname;}
private final ObjectProperty<Integer> nbPartieGagnee = new SimpleObjectProperty<>();
public int getNbPartieGagnee() {return nbPartieGagnee.get();}
public void setNbPartieGagnee(int valeur) {nbPartieGagnee.set(getNbPartieGagnee()+valeur);}
public Joueur(){
this("");
}
public Joueur(String surname){
this.surname.setValue(surname);
this.nbPartieGagnee.setValue(0);
}
}
Ensuite j'essaye de sérialisé et désérialiser pour tester mon code.
Ainsi dans une fênetre qui affiche le contenu de ma liste j'ai un bouton sauvegarder qui appelle cette méthode :
public void save(ListeJoueurs listJoueurs) {
try(FileOutputStream fos = new FileOutputStream("listeJoueur.txt")){
System.out.println("print list sauvegarder");
for(Joueur str:(listJoueurs.getListJoueur())){
System.out.println(str.getSurname());
}
ObjectOutputStream oss = new ObjectOutputStream(fos);
oss.writeObject(listJoueurs);
}
catch (IOException e){
e.printStackTrace();
}
}
Puis je supprime tout les éléments de la liste et j'essaye de la re- remplir en appelant la méthode suivante :
Je ne sais pas si mon problème vient de ma sérialisation ou de ma dé-sérialisation... J'ai regardé le contenu de ma variable list quand je la sérialise et ma liste de joueur et compose de 3 de trois joueurs (donc remplie), de plus mon fichier binaire aussi se remplie... en conséquence je ne voit pas pourquoi elle est vide lors de la dé-sérialisation.