정적 참조 및 transient 키워드로 표시된 개체를 제외하고 개체의 모든 변수를 포함하여 개체의 인스턴스를 저장하는 빠른 방법이라는 것을 알고 있습니다.Java에서 직렬화를 사용하는 가장 좋은 방법은 무엇입니까?
나는 입출력에별로 좋지 않다. 그리고 나의 애플리케이션은 3 가지 별개의 다른 객체 (객체를 포함하고있다)가있는 약 50 개의 클래스를 가지고있다.
예를 들어, 나는 동물 클래스, 직원 클래스, 차량 클래스 있습니다. 런타임에 인스턴스 객체를 포함하는 모든 하위 클래스, 메소드 등을 포함하는 모든 객체들.
제 질문은이 모든 정보를 직렬화로 저장하는 가장 쉬운 방법은 무엇입니까? 저는 교수님과 함께이 문제에 관해 토론을했고, "Data.class"이라는 포괄적 인 클래스와 같은 것을 제안했습니다. 모든 것이 "손"이고, 그 다음 그것을 직렬화합니다. 결국 .ser 파일을 참조하는 모든 객체를 저장하게됩니다.
나는 데이터을 확장은 " Data.class"를 만들고 모든 내 50 개 클래스를 만드는 방법에 대한 생각했다. 다음 내 저장 방식을 가진 그러나public void saveData(){
Data myData = new Data()
try
{
FileOutputStream fileOut =
new FileOutputStream("Data.ser");
ObjectOutputStream out =
new ObjectOutputStream(fileOut);
out.writeObject(myData);
out.close();
fileOut.close();
}catch(IOException i)
{
i.printStackTrace();
}
}
같은 것을, 나는이 작업을 얻을 수없는 것. 나는 모든 하위 클래스에 대한 기본값 만 포함하는 빈 데이터 인스턴스를 만들기 때문에 그것이라고 생각합니다. 함수를 호출하려고 할 때 (해당 객체의 모든 값이 채워진 후) 저장하려고하지만 잘못된 것을 수행하고 무엇을 알아 내지 못합니다.
도움을 주시면 감사하겠습니다. 분명히 세 가지 유형의 객체의 모든 단일 인스턴스를 수동으로 직렬화 할 필요는 없습니다. 그것은 300 이상이고 나는 그것을하지 않는 것을 좋아할 것입니다.
또한 Data에 serialVersionID를 지정하고 Data에 대한 serializable 인터페이스를 구현했습니다.
'Data myData = new Data();'는 생략하지 말고 오히려'serializable' ...;) – Mordechai
을 직렬화하거나 Data 객체 자체에'this'를 직렬화하십시오. – Mordechai
@ M.M. 사실, 나는 이것을 밤늦게 대답 했으므로 고려하지 않았습니다. 감사합니다 –