2009-09-23 4 views
13

Eclipse는 나를 위해 serialVersionUID를 멋지게 생성합니다. 하지만이 세대를 다시하지 않으면 파일을 변경함에 따라 ID가 자동으로 업데이트되지 않으므로 수동 코드 생성 인 것 같습니다.각 변경 사항과 함께 serialVersionUID의 Eclipse 자동 생성

내용을 변경할 때마다 serialVersionUID를 생성하는 방법이 있습니까? "Save Actions"에는 이러한 옵션이 포함되어 있지 않은 것으로 보입니다. 누군가이 방법을 찾았습니까?

IDE 저장 작업 또는 이와 유사한 작업과 결합하여 작업을 수행 할 때 변경 사항을 되돌릴 수있어 직렬화에 영향을 미치지 않는 것이 좋습니다.

안부, Touko

편집 : @gustafc : 두 가지 주요 포인트는 이것에 대한 있습니다 : 내가 제대로 이해 한 경우

  • 은 다른 컴파일러의 serialVersionUID 에 대해 서로 다른 값으로 끝낼 수 있습니다
    • Serializable API : 그러나 모든 직렬화 가능 클래스가 serialVersionUID 값을 명시 적으로 선언하는 것이 좋습니다. 기본 serialVers ionUID 계산은 컴파일러 구현에 따라 달라질 수 있습니다 수준의 세부 사항에 매우 민감하며, 따라서 직렬화
  • 내가 서버에서 일을하는 객체와 같은 명령 패턴의 종류를 사용하고 동안 예기치는 InvalidClassExceptions 발생할 수 있습니다. 따라서 객체 내용이 변경되지는 않았지만 클라이언트와 서버에서 클래스 내용이 다른 경우를 파악하는 것이 좋습니다.
    • 하지만 이번에는 콘텐츠 변경으로 인해 자동 생성 된 값으로 작동하지 않을 것입니다. 그래서, 실제로 나는 자동 증가의 serialVersionUID이 소리가 분별합니까

을하고 싶습니다?

SUMMA의 summarum는 더 생각 후, 각 변경에 증가 자동 증가의 serialVersionUID이 작업을 수행하려면 Eclipse에서 표준 기능은 없습니다 ...

+0

왜이 작업을 수행 하시겠습니까? 컴파일러는 Eclipse와 동일한 'serialVersionUID'를 지정하지 않으면 자동으로 생성합니다. 'serialVersionUID'를 지정하는 전체적인 요점은 당신이 변경을 깨뜨리지 않으면 (클래스 계층을 변경하거나 필드를 제거하지 않는 한) * 변경하면 안된다는 것입니다. – gustafc

+0

@gustafc : 편집 – Touko

답변

4

더 나은 것입니다.

2

빌드시 Ant SerialVer task으로 시리얼 버전을 업데이트 할 수 있습니다.

0

세대를 다시 지정하지 않으면 파일을 변경하면 ID가 자동으로 업데이트되지 않습니다.

AFAIK 기본값 serialVersionUID은 클래스의 현재 "모양"을 기반으로 생성 된 ID입니다. 그래서 당신이 아무것도 바꿀 때 당신의 아이디가 생성된다면 - 그냥 버려두십시오.

그러나 serialVersionUID을 가끔 변경하려는 경우 - 변경하십시오. id를 무작위로 수정하면됩니다.

임의의 숫자는 연속 된 숫자보다 약간 낫습니다 (다른 사람이 환경에서 동일한 정규 이름을 가진 클래스를 구성하지 않는다고 가정 할 경우) serialVersionUID = 1부터 시작하여 원하는대로이 숫자를 증가시킬 수도 있습니다.

+0

을 참조하십시오. 그러나 "그냥 내보내는 것"은 컴파일러에 따라 다릅니다. 직렬화가 실제로 사용되는 경우 다른 Java 버전/컴파일러가 사용되고 있습니다. 제어 할 수없는 것에 의존하는 것이 반드시 좋은 생각은 아닙니다. –

관련 문제