클래스를 직렬화하려면
Serializable
를 impliments만 하면 되기 때문에 간단하고 신경쓸 부분이 없다고 생각하겠지만, 실제로는 훨씬 더 복잡하다. 직렬화를 지원하는것은 간단할지 몰라도 아주 값비싼 일이다.
<aside> 🔥 직렬화를 구현하고자 한다면 감당할 수 있을 만큼 고품질의 직렬화 형태로 설계해야한다. 고생이 그만큼 따르고 개발비용이 발생하지만 보상을 보장한다.
</aside>
SerialVersionUID
라는 이름의 static final long 필드의 식별 번호를 부여받는다.
SerialVersionID
도 변한다. 즉 자동 생성되는 값에 의존하면 쉽게 호환성이 깨져버려 런타임에 InvalidClassException
이 발생한다. 따라서 직접 넣는것이 좋다.