Java에서 Serializable 클래스를 확장 할 때 serialVersionUID에 대해 선택한 항목이 중요합니까?


Answers

serialVersionUID에서 중요한 것은 클래스의 이진 호환 직렬화 버전이 동일한 serialVersionUID를 갖는다는 것입니다. 즉 클래스의 직렬화 된 형식을 전혀 변경하지 않으면 괜찮을 것입니다.

물론 더 나은 옵션은 직렬화가 사용할 수있는 고급 옵션을 사용하여 절대로 변경 사항이 발생하지 않도록하는 것입니다. 나는 readResolve () 등을 읽는 것을 제안한다. 효과적인 Java는이 영역의 더 까다로운 문제를 자세히 다룹니다.

Question

Serializable 인터페이스 를 구현하는 클래스 (ArrayBlockingQueue)를 확장하려고합니다. 썬의 문서 (그리고 제 IDE)에서는 장난을 막기 위해이 값을 설정해야한다고 조언합니다.

그러나 기본 serialVersionUID 계산은 컴파일러 구현에 따라 달라질 수있는 클래스 세부 정보에 매우 민감하므로 deserialization 중에 예기치 않은 InvalidClassExceptions이 발생할 수 있으므로 모든 serializable 클래스에서 serialVersionUID 값을 명시 적으로 선언하는 것이 좋습니다.

자, 나는 거기에 어떤 가치를 두어야할지 덜 신경 쓸 수 없었다. 그게 그렇게 중요한 건가?




Links