와!!! 신기한걸 알았다!!!
readResolve() 메서드의 비밀!!!
우선 자바는 기본적으로 - 역직렬화를 할때, new instance를 reflection을 사용해서 생성한다.
따라서 역직렬화시 항상 새로운 인스턴스객체가 반환되게 된다.
그러나 readResolve() 메서드를 가지고 있는경우, 해당 readResolve() 메서드가 반환하는 인스턴스로 역직렬화시 반환되는 인스턴스를 대체한다.
그러면 위에서 new instance로 만든 인스턴스는 참조값을 가지지 않으므로, 가비지 컬렉터에 의해서 자동으로 수거가 될것이고 - 우리는 싱글톤 객체를 유지할 수 있게 되는 것이다!!


댓글 없음:
댓글 쓰기