serialVersionUID (3567653491060394677L)를 생성하는 대신 serialVersionUID (1L)를 사용하면 무언가를 말하는 것입니다.
이 클래스의 버전 번호 1과 호환되지 않는이 클래스의 직렬화 된 버전을 가진이 클래스를 다루지 않는 시스템이 없다고 100 % 확신한다고합니다.
직렬화 된 버전 기록이 알려지지 않았다는 변명을 생각할 수 있다면 자신감을 가지고 말하기가 어려울 수 있습니다. 평생 동안 성공적인 수업은 많은 사람들에 의해 유지되고 많은 프로젝트에 살고 많은 시스템에 상주 할 것입니다.
당신은 그것을 고민 할 수 있습니다. 또는 당신은 잃고 싶어 복권을 재생할 수 있습니다. 버전을 생성하면 문제가 발생할 가능성이 거의 없습니다. "아직 아무도 1을 사용하지 않았다"고 가정하면 확률은 작은 것보다 큽니다. 우리 모두가 0과 1이 멋지다고 생각하기 때문입니다.
-
serialVersionUID (1L)를 사용하지 않고 serialVersionUID (3567653491060394677L)를 생성하면 무언가를 말하는 것입니다.
사람들 이이 클래스의 역사에서 다른 버전 번호를 수동으로 만들거나 생성했을 수 있으며 Longs가 큰 숫자이기 때문에 걱정하지 않아도됩니다.
어떤 방식 으로든 클래스가 존재하거나 존재하는 전체 유니버스에서 클래스를 직렬화 할 때 사용 된 버전 번호 기록을 완벽하게 알지 못하면 기회가 생깁니다. 1이 AOK인지 100 % 확신 할 시간이 있다면 그것을 찾으십시오. 그것이 많은 일이라면, 계속해서 맹목적으로 숫자를 생성하십시오. 복권 당첨 가능성이 더 높습니다. 그렇다면, 알려주세요. 맥주를 사겠습니다.
추첨에 대한이 모든 이야기를 통해 serialVersionUID가 무작위로 생성된다는 인상을 받았을 것입니다. 실제로 숫자 범위가 Long의 가능한 모든 값에 균등하게 분배되는 한 괜찮습니다. 그러나 실제로는 다음과 같이 수행됩니다.
http://docs.oracle.com/javase/6/docs/platform/serialization/spec/class.html#4100
당신이 얻는 유일한 차이점은 무작위 소스가 필요 없다는 것입니다. 클래스 자체의 변경 사항을 사용하여 결과를 변경하고 있습니다. 그러나 비둘기 구멍 원리에 따르면 여전히 잘못되어 충돌을 일으킬 가능성이 있습니다. 정말 믿을 수 없을 것입니다. 나 한테 맥주를 가져다 줘서 행운을 빌어
그러나 클래스가 하나의 시스템과 하나의 코드베이스에만 살더라도 손으로 숫자를 늘리면 충돌 가능성이 전혀 없다고 생각하면 인간을 이해하지 못한다는 것을 의미합니다. :)