Search
Duplicate

자바 직렬화 SerialVersionUID

Created
2023/03/24 14:12
tags
☕Java
자바에서 직렬화(Serialize)는 파일 등 외부에서 사용하기 위해 객체를 바이트로 바꾸는 작업을 말한다.
직렬화를 구현할 때 종종 serialVersionUID (SUID) 변수가 쓰인다. SUID 값을 사용해 직렬화된 클래스의 버전을 구별한다.
별도로 지정하지 않은 경우 클래스의 해시(Hash) 값으로 자동 생성된다. 다만, 자동으로 생성하는 경우 직렬화/역직렬화를 할 때 SUID가 다르면(클래스 내용 변경 등의 이유로) 오류를 반환한다.
예를 들어 직렬화가 이미 된 기존 클래스에 fooBar 변수를 추가한다면, SUID가 없을 때는 InvalidClassException 오류를 반환한다.
SUID가 있을 때는 오류를 반환하지 않으며 fooBar 변수 사용 시에는 null 값을 반환한다.