싱글턴(Singleton)
public class Elvis {
public static final Elvis INSTANCE = new Elvis();
private Elvis() {...}
public void leaveTheBuilding() {...}
}public class Elvis {
private static final Elvis INSTANCE;
private Elvis() {...}
public static getInstance() { return INSTANCE; }
public void leaveTheBuilding() {...}
}이를 방지하기 위해 인스턴스 필드에 transient 키워드를 선언하고 readResolve 메서드를 생성한다.
private/public static final transient Elvis INSTANCE;
// 싱글턴임을 보장해주는 메서드, 역직렬화시 호출
public Object readResolve() { return INSTANCE }; public enum Elvis {
INSTANCE;
public void leaveTheBuilding() {...}
}