역직렬화 시 객체의 기본 생성자를 이용하여 리플렉션하기 때문에 새로운 인스턴스가 생길 수 있음
다음과 같이 readResolve 메서드를 정의하여 반환 객체를 변환할 수 있음
class TestClass {
private static final TestClass INSTANCE = new TestClass();
private TestClass() {}
private Object readResolve() {
return INSTANCE;
}
}
역직렬화 시 객체 생성 후 readResolve 메서드를 이용하여 생성한 객체를 반환함
반환하기 위한 메서드의 리턴값으로 미리 정의해둔 객체를 응답하여 싱글톤 유지