Я на самом деле хочу сериализовать список объектов, но я думаю, что это не делает различий. Я кладу свой класс, у которого есть только два свойства. Строка и ObservableList. Я буду включать в него методы сериализации. Я знаю, что ObservableList не реализует сериализуемое, но я заполняю TableView ими, поэтому я его использую, но если есть другой способ, я открыт для него.Как сериализовать объект, на котором есть 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;
}
}
Вот реализация в моем 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();
}
Я видел этот вопрос, но это не соответствует моей потребности при этом я не мог изменить его на то, что я хочу. How to serialize ObservableList
«На самом деле вы хотите сериализовать список объектов, но я думаю, что это не делает различий», так что конкретно вы спрашиваете здесь? –
«Как сериализовать объект, на котором есть ObservableList?» Я думаю, вопрос довольно ясен. Моя реализация сериализует список объектов, в которых у объекта есть ObservableList. Вот почему я так сожалею. Должно было быть более ясно, что –