역 직렬화 할 수있는 객체를 직렬화하는 몇 가지 일반적인 방법이 있습니다.
1 스토어에게 인스턴스를 다시하는 데 필요한 모든 필드를 저장하도록 설계 import
및 export
방법을 사용하여 JSON 형식의 데이터입니다. 버전이 너무 낮 으면 업데이트 알고리즘을 호출 할 수있는 version
키를 포함하면 이전 버전과 호환 될 수 있습니다. 일반적인 라이브러리는 Google Gson 라이브러리로, JSON 파일을 일반적으로 편집 할 수있을뿐만 아니라 JSON에서 Java 객체를 나타낼 수도 있습니다.
2. 위의 방법과 비슷한 방법으로 내장 된 Properties 클래스를 사용하십시오. Properties 객체는 나중에 일반 Java Properties 파일로 작성된 스트림 (store()
)을 사용하여 저장하거나 XML (storeToXML()
)에 저장하여 사용할 수 있습니다. JSON, XML에 저장하거나, 속성 파일이 너무 복잡하거나이 켜지지되지 중 하나입니다 때로는 단순한 객체가 쉽게 장소에서 키 - 값 쌍으로 표현 될 수
3. (과잉 하나는 말할 수) . 이 경우 객체를 직렬화하는 효과적인 방법은 String
일 수 있고 Object
(HashMap<String,Object>
) 일 수있는 키 - 값 쌍을 포함하는 HashMap
객체를 직렬화하기 위해 ObjectOutputStream 클래스를 사용할 수 있습니다. 이 기능을 사용하면 객체의 모든 필드를 저장할 수있을뿐만 아니라 다양한 기능을 제공하면서 version
키를 포함하여 저장할 수 있습니다.
참고 : ObjectOutputStream
에 대한 지속성 스토리지를 사용하여 객체를 직렬화하는 것은 일반적으로 나쁜 규칙으로 간주되어 있지만,이 방법으로 오랫동안 클래스의 소스 코드를 동일하게 유지로 사용할 수있다.
또한 버전에 대한 참고 : 클래스 변경 안전하게으로 오랫동안 ObjectOutputStream
를 사용하여 직렬화를 방해하지 않고 할 수 그들이 호환 변화이기 때문에. Versioning of Serializable Objects chapter of the Object Serialization Specification에서 언급 한 바와 같이 :
호환 변화는 클래스와 발신자 사이의 계약 에 영향을 미치지 않는 변화이다.
[객체 직렬화 사양의 직렬화 가능 객체 버전 관리] (http://docs.oracle.com/javase/7/docs/platform/serialization/spec/version.html)를 읽어야합니다. – EJP
개체를 'JSON', 'XML'등으로 저장하는 것은 모든 언어에서 일반적인 방식이지만이 게시물은 Java 및 사용 가능한 클래스를 대상으로 작성되었습니다. 제목에는 Java가 포함되어야합니다. –
질문 제목에 태그를 추가하지 마십시오. [질문에 제목에 "태그"가 포함되어야합니까?] (http://meta.stackexchange.com/q/19190/182862). –