2017-02-17 13 views
1

실제로 개체 목록을 serialize하려는하지만 그것은 아무런 차이가 없다고 생각합니다. 나는 두 가지 속성이있는 수업을 시작합니다. 문자열 및 ObservableList입니다. 여기에 직렬화 메서드가 포함됩니다. 나는 ObservableList가 serializable을 구현하지 않는다는 것을 안다.하지만 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

+0

"실제로 _ 객체 목록을 직렬화하려고하지만 그게 아무런 차이가 없다고 생각합니다.", 그래서 정확히 여기서 무엇을 묻고 있습니까? –

+0

"ObservableList가있는 객체를 직렬화하는 방법" 나는 그 질문이 꽤 분명하다고 생각한다. 내 구현에서는 객체 목록에 ObservableList가있는 객체 목록을 직렬화합니다. 그게 내가 쓴 이유야, 미안해. 그 일에 대해 더 분명히해야 했어. –

답변

0

이 경우 Externalizable 인터페이스를 구현해야합니다. 이를 위해서는 객체 직렬화 및 비 직렬화를위한 고유 한 메소드를 작성해야합니다.