The serializable class does not declare a static final serialVersionUID field of type long 워닝

개발새발·2021년 11월 6일
0

java

목록 보기
5/12

시작은 스터디 친구의 질문이였다. 아래 코드를 지우면 생기는

private static final long serialVersionUID = 1L;

아래와 같은 워닝이 문제였다.

찾아보니 엄청 말이 길다..

데이터를 읽었을 때 객체의 자료구조를 그대로 보존하기 위한(=serialization) 값이라고 한다.

만약 serialVersionUID를 지정하지 않으면, 실행시점에서 JVM이 디폴트값을 산정한다고도 한다. 그래서 굳이 신경을 쓰지 않아도 된다는 말이다.

하지만 모든 serialization이 필요한 클래스에는 명시적으로 serialVersionUID를 선언해줄 것을 권유한다고 한다. 디폴트 serialVersionUID 계산이 클래스 세부사항을 민감하게 반영하여 deserialization과정에서 예상치못한 InvalidClassException을 일으킬 수 있다고 한다.

무슨 일인지 잘은 이해는 안되지만,

결론은, 선언해주는 게 좋다!

참고: https://civan.tistory.com/113

profile
발새발개

0개의 댓글

관련 채용 정보