Java 로 개발을 하다보면 serialVersionUID warning 을 종종 본다.
Java Spec에서 제공하는 클래스 (또는 추상클래스) 또는 인터페이스들을 extends 하거나 implements 하는 경우에 나오는것 같다.
요즘 Exception을 정의해서 사용하느라 자주보게 되는데, 뭔지 잘 모르고 있다가.
궁금해서 Java Tutorial을 찾아보았다.
serialVersionUID는 serialize (직렬화)를 할때 메타 정보로 저장되는 id값이다.
객체를 직렬화 해서 전달하고 다시 역직렬화 할때 데이터파일에 저장되있는 serialVersionUID를 확인한다.
이 ID를 확인하는 이유는 소프트웨어는 시간이 흐르면서 버전이 바뀌기 마련인데,
원격지와 로컬의 버전이 같은지를 확인해주는 일종의 장치라고 생각할수 있겠다.
이게 warning인 이유는 대개 보통의 로컬 Java 프로그램은 직렬화 할 일이 없을뿐더러,
혹시 직렬화할일이 생기더라도 컴파일러가 알아서 해주기 때문에 신경쓰지 않아도 된다.
하지만, 개발을 오래 하다보면 노란줄만 봐도 짜증이 생기게 되는데 그럴땐 그냥 ctrl + 1 누르면 Default로 알아서 넣어준다.
(그것도 아주 황당한 숫자..)
나의 경우에는 모조리 그냥 1로 때려 넣는다. (Java Compiler로 별로 나와 다를건 없음 ㅋㅋ)
private static final long serialVersionUID = 1;
이래놓고 나는 평안한 표정을 지으며, 그냥 다시 하려던 부분을 구현한다 ㅡㅂㅡ;;;~~~
아마 이걸로 언젠간 … 고생을 할지도 모른다.
하지만 exception에 serialVersionUID라고 뜰 것이기 때문에, 그냥 넘어가는 인간미도 좀 있어야 ..
… 황당한 지옥구경도 하고 그러는 거겠지ㅋㅋ