Khi bạn sử dụng serialVersionUID (1L) thay vì tạo serialVersionUID (3567653491060394677L), bạn đang nói điều gì đó.
Bạn đang nói rằng bạn tự tin 100% rằng sẽ không có hệ thống nào chạm vào lớp này có phiên bản nối tiếp không tương thích của lớp này với số phiên bản là 1.
Nếu bạn có thể nghĩ ra bất kỳ lý do nào cho lịch sử phiên bản nối tiếp của nó là không xác định, điều đó có thể khó nói với sự tự tin. Trong vòng đời của nó, một lớp thành công sẽ được duy trì bởi nhiều người, sống trong nhiều dự án và cư trú trong nhiều hệ thống.
Bạn có thể đau đớn về điều đó. Hoặc bạn có thể chơi xổ số hy vọng sẽ thua. Nếu bạn tạo phiên bản, bạn có rất ít khả năng xảy ra sự cố. Nếu bạn giả sử "Hey tôi cá là chưa có ai sử dụng 1" thì tỷ lệ cược của bạn lớn hơn rất nhỏ. Đó chính xác là bởi vì tất cả chúng ta đều nghĩ 0 và 1 thật tuyệt vời khi bạn có tỷ lệ trúng chúng cao hơn.
-
Khi bạn tạo serialVersionUID (3567653491060394677L) thay vì sử dụng serialVersionUID (1L), bạn đang nói điều gì đó.
Bạn đang nói rằng mọi người có thể đã tạo thủ công hoặc tạo các số phiên bản khác trong lịch sử của lớp này và bạn không quan tâm vì Longs là những con số lớn đáng sợ.
Dù bằng cách nào, trừ khi bạn hoàn toàn biết lịch sử của các số phiên bản được sử dụng khi tuần tự hóa lớp trong toàn bộ vũ trụ nơi nó đã hoặc sẽ tồn tại, bạn sẽ có cơ hội. Nếu bạn có thời gian để chắc chắn 100% là AOK, hãy tiếp tục. Nếu đó là công việc nhiều, hãy tiếp tục và mù quáng tạo ra số. Bạn có nhiều khả năng trúng xổ số hơn là có sai lầm. Nếu vậy, hãy cho tôi biết và tôi sẽ mua cho bạn một cốc bia.
Với tất cả các cuộc nói chuyện về việc chơi xổ số này, tôi có thể đã cho bạn cảm giác rằng serialVersionUID được tạo ngẫu nhiên. Trong thực tế, miễn là phạm vi số được phân bổ đều trên mọi giá trị có thể của một Long sẽ ổn. Tuy nhiên, nó thực sự được thực hiện theo cách này:
http://docs.oracle.com/javase/6/docs/pl platform / subsialization / spec / class.html # 4100
Sự khác biệt duy nhất bạn có với đó là bạn không cần một nguồn ngẫu nhiên. Bạn đang sử dụng các thay đổi trong chính lớp để thay đổi kết quả. Nhưng theo nguyên tắc pigeonhole, vẫn có khả năng nó có thể đi sai và va chạm. Nó cực kỳ khó xảy ra. Vì vậy, chúc may mắn nhận được bia từ tôi.
Tuy nhiên, ngay cả khi lớp sẽ chỉ sống trong một hệ thống và một cơ sở mã, việc nghĩ rằng việc tăng số bằng tay sẽ không có cơ hội va chạm chỉ có nghĩa là bạn không hiểu con người. :)