Как сериализовать объект, на котором есть ObservableList?

Я действительно хочу сериализовать список объектов, но я думаю, что это не имеет значения. Я помещаю свой класс, который имеет только два свойства. Строка и ObservableList. Я включу в него методы сериализации. Я знаю, что ObservableList не реализует сериализуемость, но я заполняю ими TableView, поэтому я использую его, но если есть другой способ, я открыт для него.

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

}

Вот реализация в моем контроллере 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();
}

Я видел этот вопрос, но он не соответствует моим потребностям, и я не мог изменить его так, как хочу. Как сериализовать ObservableList


person davigzzz    schedule 17.02.2017    source источник
comment
_ на самом деле хочу сериализовать список объектов, но я думаю, что это не имеет значения_, так что именно вы здесь спрашиваете?   -  person BusyProgrammer    schedule 18.02.2017
comment
Как сериализовать объект, на котором есть ObservableList? Я думаю, что вопрос достаточно ясен. Моя реализация сериализует список объектов, в котором объект имеет ObservableList. Вот почему я поставил это, извините. Должен был быть более ясным об этом   -  person davigzzz    schedule 18.02.2017


Ответы (1)