가끔 노랑밑줄이 쳐질때가 있다. 이게 무엇인가.
유일한 클래스임을 보장해주기 위한 ID임이다.
클래스는 때때로 필요한 필드가 추가될수도 있으며, 이에 따라 예전에 만들어놓은 클래스와 다른 형태를 가질수 있다. 그럼에도 불구하고 이 두개는 같은것이라고 봐야할 필요가 있으며 이럴때 구분자로 사용할 수 있다.
예를들어 기존에 있던 Person 클래스에 간지남 정도를 표시해주기위해 최근 ganziness 필드를 추가했다고 치자.
예전에 만들어 놓은 Person은 간지와 관련된 필드가 없기 때문에 컴파일러는 이 두개의 객체를 다르게 볼 수 있다.
그렇게 된다면 직렬화를 복원하는 과정에서 두개의 이질감 때문에 컴퓨러는 InvalidClassException을 뱉어낼수 있다.
즉, serialize된 데이터를 다시 클래스로 복원하는 과정에 (Deserialization) 중 InvalidClassException이 발생할 확률이 있기 때문에, 그 객체의 유일성을 보장해주기 위해서 직접 serialVersionUID 를 선언해준다.
아래와같이 private으로 선언해주면 밖에서 바뀔일도 없고 갠찬타
private static final long serialVersionUID = -6732354468311278028L;
'소프트웨어 개발 > Java - Basic' 카테고리의 다른 글
가능한 알파벳조합을 set으로 구하기 (0) | 2016.07.04 |
---|---|
Java Reflection (리플렉션) 을 이용해 private 특정 타입 필드를 죄다 반올림하기. (0) | 2016.04.17 |
임시 (0) | 2016.04.04 |
배열및 다차원배열 출력방법 (0) | 2016.03.19 |
쓰레드(Thread) 관련 메서드가 죄다 Deprecated 된이유. (0) | 2015.08.29 |