싱글턴


아이템 3에서의 싱글턴 예제

public class Elvis {
    public static final Elvis INSTANCE = new Elvis();
    private Elvis() { }

    ...
}

Serializable이 붙는다면?


위 클래스에 Serializable을 구현하는 순간 싱글턴이 아니게 된다.

앞 선 아이템에서 소개하는 커스텀 직렬화, readObject 메서드 모두 소용 없다.

초기화 할 때 만들어진 인스턴스와 무조건 다른 인스턴스를 반환하기 때문이다.

readResolve


private Object readResolve() {
    // 기존에 생성된 인스턴스를 반환한다.
    return INSTANCE;
}