자바 사양은 말한다 :ObjectStreamClass.getSerialVersionUID에 의존하는 것이 안전하지 않은 이유는 무엇입니까?
사람이 파고 있었다하세요 "강하게 기본이 계산이 컴파일러 구현에 따라 달라질 수 있습니다 수준의 세부 사항에 매우 민감 serialVersionUID의 이후의 모든 직렬화 가능 클래스가 명시 적으로 serialVersionUID의 값을 선언하는 것이 좋습니다" ? getSerialVersionUID() 메서드는 리플렉션을 수행하며 리플렉션은 일반적으로 모든 곳에서 사용되므로 컴파일러에 따라 무엇이 다른가요?
이 질문의
그러나이 설명은 컴파일러에 종속 된 이유를 설명하지 않습니다. getSerialVersionUID()는 실시간으로 값을 계산하는 데 사용됩니까? – ejaenv
@ejaenv, 내 upd을 봐라. – Andremoniy
컴파일러의 의존성이 없어도,'static' 필드 나 * methods *를 변경할 때, 영속성 폼을 호환되지 않는 것으로 간주하는 알고리즘을 사용하고 싶지는 않을 것이다. 클래스에 이니셜 라이저가 있는지 여부에도 영향을 미칩니다. 인용문 텍스트에서 언급하지 못한 것은 "모든 공개 및 보호 된 회원 *"뿐만 아니라 모든 패키지 전용 멤버도 설명되므로 내부 클래스 접근 자와 같은 합성 메소드가 중요한 이유입니다. – Holger