Problème avec ma méthode readObject [Résolu]

Signaler
Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019
-
Hamster18
Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019
-
Bonjour, je travail sur un projet en fxml est je suis bloquer sur ma sérialisation ou plus exactement sur la rediffusion de ma méthode readObject.

Voici ma situation : je souhaite sérialiser une classe qui n'est pas sérialisable. Cette classe est ListeJoueurAffichage. Cependant et bien écrite dans un fichier binaire. Je le lit, cela ne provoque aucune erreur, mais aucun élément n'est ajouter dans ma liste. Je pense donc que mon problème vient de ma méthode readObject, cependant je ne voit pas le pourquoi.

Merci d'avance pour vos réponses.

ListeJoueurAffichage:
public class ListeJoueursAffichage 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("vava"));
       listJoueurObs.add(new Joueur("hamster"));
   }

  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));
    }


    private void readObject(final ObjectInputStream ois) throws IOException, ClassNotFoundException {
        List<Joueur> list = new ArrayList<Joueur>();
        list=(ArrayList<Joueur>) ois.readObject();
        this.listJoueurObs = FXCollections.observableArrayList(list);
        System.out.println("Print read");
        for(Joueur str:(listJoueurObs)){
            list.add(str);
        }
    }

    private void writeObject(final ObjectOutputStream oos) throws IOException {
      List<Joueur> list = new ArrayList<>();
        System.out.println("Print write");

        for(Joueur str:(listJoueurObs)){
            list.add(str);
        }

        oos.writeObject(list);
    }
}




D'un notre côté j'ai une classe Sauvegarde qui as les méthode save et load suivante :


    public void save(ListeJoueursAffichage 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);
            oss.close();
        }
        catch (IOException e){
            e.printStackTrace();
        }
    }

    public ListeJoueursAffichage load() {
        ListeJoueursAffichage listJoueurs = null;
        try (FileInputStream fis = new FileInputStream("listeJoueur.txt")) {
            ObjectInputStream ois = new ObjectInputStream(fis);
            listJoueurs=(ListeJoueursAffichage)ois.readObject();
        }
        catch (IOException | ClassNotFoundException e){
            e.printStackTrace();
        }
        return listJoueurs;
    }

1 réponse

Messages postés
98
Date d'inscription
mercredi 2 janvier 2019
Statut
Membre
Dernière intervention
30 décembre 2019

J'ai fini par résoudre mon problème en redéfinissant la méthode readObject et writeObject ... Merci pour votre aide =)