아이템 3에서의 싱글턴 예제
public class Elvis {
public static final Elvis INSTANCE = new Elvis();
private Elvis() { }
...
}
위 클래스에 Serializable
을 구현하는 순간 싱글턴이 아니게 된다.
앞 선 아이템에서 소개하는 커스텀 직렬화
, readObject
메서드 모두 소용 없다.
초기화 할 때 만들어진 인스턴스와 무조건 다른 인스턴스를 반환하기 때문이다.
private Object readResolve() {
// 기존에 생성된 인스턴스를 반환한다.
return INSTANCE;
}