item 87) 커스텀 직렬화 형태를 고려해보라
기본 직렬화 vs 커스텀 직렬화
기본 직렬화 형태 사용하는 경우
public class NameimplementsSerializable { /** * 성. null이 아니어야함 *@serial */private final String lastName; /** * 이름. null이 아니어야 함. *@serial */private final String firstName; /** * 중간이름. 중간이름이 없다면 null. *@serial */private final String middleName; }
물리적 표현과 논리적 표현의 차이
공개 API가 현재 내부 표현 방식에 얽매임
너무 많은 공간 차지
과도한 시간 소요
스택 오버플로 발생
커스텀 직렬화
커스텀 직렬화 시 주의 사항
불변식이 깨지는 객체
transient 한정자
transient 필드 초기화값
동기화 메커니즘
직렬화 가능 클래스에 직렬 버전 UID 명시하기
Last updated