2017-02-17 2 views
1

Je veux réellement sérialiser une liste d'objets mais je pense que cela ne fait aucune différence. Je mets ma classe qui n'a que deux properies. Une chaîne et un ObservableList. J'inclurai les méthodes de sérialisation dedans. Je sais qu'ObservableList n'implémente pas de sérialisable, mais je remplis un TableView avec eux, c'est pourquoi je l'utilise mais s'il y a un autre moyen, je suis ouvert à ça.Comment sérialiser un objet avec une liste ObservableList?

public class Tratamiento implements Serializable{ 

private String name; 
private ObservableList<Material> materials; 

public Tratamiento(String name, ObservableList<Material> materials) { 
    this.name= name; 
    this.materials= materials; 
} 

public Treatment(){   
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name= name; 
} 

public ObservableList getMaterials() { 
    return materials; 
} 

public void setMaterials(ObservableList materials) { 
    this.materials = materials; 
} 


public int addTreatment(List tratamiento) { 
    int res = 0; //Failure 

    try { 
     FileOutputStream fileOut = new FileOutputStream("Treatment.ser"); 
     ObjectOutputStream out = new ObjectOutputStream(fileOut); 
     out.writeObject(treatment); 
     out.close(); 
     fileOut.close(); 
     System.out.printf("Object has been serialized"); 
     res = 1; 
    } catch (IOException i) { 
     i.printStackTrace(); 

    } 

    return res; 
} 



public List consultListTreatments() { 
    int res = 0; 
    //Deserialize file 
    List<Treatment> list = new ArrayList<Treatment>(); 

    try { 
     FileInputStream fileIn = new FileInputStream("Treatment.ser"); 
     ObjectInputStream in = new ObjectInputStream(fileIn); 
     list = (List) in.readObject();  
     in.close(); 
     fileIn.close(); 
     res = 1; 
    } catch (IOException i) { 
     i.printStackTrace(); 
    } catch (ClassNotFoundException c) { 
     System.out.println("Class not found"); 
     c.printStackTrace(); 
    }  
    return list; 
}  

} 

Voici la mise en œuvre dans mon contrôleur FXML

@FXML 
private void createTreatment(ActionEvent event){ 
    Treatment tr = new Treatment();   
    List<Treatment> list = new ArrayList<Treatment>(); 
    list = tr.consultListTreatments(); 

    ObservableList<Material> rows = table.getItems();//FXCollections.observableArrayList(); 
    //get values of the rows 


    Treatament newTreatment = new Treatment(TextFieldTreatmentName.getText(),rows); 

    list.add(newTreatment); 
    newTreatment.addTreatment(list); 
    TextFieldTreatmentName.clear(); 
} 

j'ai vu cette question, mais il ne correspond pas à mon besoin, ni ne je pouvais modifier ce que je veux. How to serialize ObservableList

+0

"_ Je veux réellement sérialiser une liste d'objets mais je pense que cela ne fait pas de différence", alors qu'est-ce que vous demandez exactement ici? –

+0

"Comment sérialiser un objet avec une liste ObservableList?" Je pense que la question est assez claire. Mon implémentation sérialise une liste d'objets dans lesquels l'objet a une ObservableList. C'est pourquoi j'ai mis ça, désolé. Devrait avoir été plus clair à ce sujet –

Répondre

0

Dans ce cas, vous devrez implémenter l'interface Externalizable. Cela vous demandera d'écrire vos propres méthodes de sérialisation et de désérialisation de vos objets.