2016-06-06 3 views
0

디스크를 통해 네트워크를 통해 간단한 POJO 객체를 직렬화하려고합니다. 하지만 직렬화 할 수있는 특성을 제어해야합니다. 예를 들어 는 : Java는 네트워크상의 디스크 직렬화를 구별합니다.

class POJO 
{ 
    String name; 
    int age; 
} 

지금이 위의 예에서 나는 이름과 나이 모두 디스크에 직렬화하고 싶다. 하지만 나는 나이를 네트워크상에서 직렬화하기를 원한다. 일부 R & D를 수행 한 후 두 가지 방법을 찾았지만 아직 완전한 기능을 갖춘 솔루션을 개발하지 못했습니다.

해결 방법 1 : transient 키워드를 사용하십시오.

문제 : 내가 transient를 사용하면 직렬화가 전혀 중단됩니다.

해결책 2 : 외부화 가능 인터페이스를 사용하십시오.

문제 : :이 인터페이스를 사용하는 경우 두 가지 방법을 구현하고 직렬화를 제어해야합니다. 이번에는 내 메서드가 디스크 또는 네트워크를 통해 직렬화되도록 호출되고 있음을 어떻게 알 수 있습니까? 그리고 어쨌든 어떤 깃발을 사용하여 이것을 알아 내면 코드가 더러워집니다.

내 아이디어은 디자인 레벨 솔루션의 일부 형태입니다. 직렬화 할 필요가있는 프로퍼티에 대해서만 getters 메소드를 공개하는 인터페이스를 작성하는 것. 그런 다음이를 사용하여 객체를 읽고 쓸 수 있으며 deserilization시 Java가 리플렉션 또는 자동으로 감지합니다. getter 메소드가 노출 된 속성 세트 만 serialize/deserialize해야합니다. 자바에 이와 비슷한 것이 있습니까?

아마도 더 깨끗하고 우아하며 깔끔한 해결책입니다.

도와주세요.

감사합니다.

답변

관련 문제