정수 foo가 포함 된 직렬화 된 개체 MyObject가 있습니다. 정수 foo에 10을 설정하고 writeObject()를 사용하여 객체를 파일에 저장합니다.Java 직렬화 설정 기본값 방지
개체 MyObject에 정수 막대를 추가합니다. 정수 막대에 값 15를 설정하고 readObject()를 사용하여 이전 직렬화 된 파일을로드합니다.
이전 직렬화 가능 파일에 정수 막대가 포함되지 않으므로 정수 막대의 값이 0이됩니다. 이전 직렬화 가능 파일에 가변 막대가없는 경우 값을 15로 유지하고 싶습니다.
readObject()를 오버라이드해야합니까? 아니면 readObject()가 "기본값"을 알 수없는 객체로 설정하지 못하게 할 수 있습니까?
생성자에서 자신의 기본값을 설정하고 내 자신의 기본값을 사용하여 버전 관리를 제어하기 때문에이 작업을 수행하려고합니다.
감사합니다. 좋은 답변입니다. 나는 직렬화에 매달 리지 않아서 다행이다. 대신에 무엇을 제안 하시겠습니까? 개체를 파일로 저장하고 좋은 버전 제어가 필요한 방법이 필요합니다. – Mikuz
장기 저장 장치가 목표 인 경우 flexjson과 같은 것을 사용하는 것이 좋습니다. 원하는 오브젝트 구조를 사용하여 언제든지 데이터를 다시 읽을 수 있습니다. Java 직렬화는 객체와 패키지 구조가 동일하지 않은 경우 훨씬 더 어려워지고 불가능합니다.Java 직렬화를 장기간 스토리지에 사용하려고 시도 할 때마다 나는 그것을 제거하고 대체하게됩니다. – chubbsondubs
발견 된 XStream은 매우 유용합니다. – Mikuz