เมื่อคุณใช้ serialVersionUID (1L) แทนที่จะสร้าง serialVersionUID (3567653491060394677L) คุณกำลังพูดอะไรบางอย่าง
คุณกำลังบอกว่าคุณมั่นใจ 100% ว่าไม่มีระบบใดที่จะสัมผัสคลาสนี้ที่มีรุ่นที่ต่อเนื่องกันไม่ได้ของคลาสนี้ด้วยหมายเลขเวอร์ชัน 1
หากคุณนึกถึงข้อแก้ตัวใด ๆ ที่ทำให้ประวัติรุ่นต่อเนื่องเป็นที่รู้จักอาจยากที่จะพูดด้วยความมั่นใจ ในช่วงอายุการใช้งานคลาสที่ประสบความสำเร็จจะได้รับการดูแลรักษาโดยคนจำนวนมากอาศัยอยู่ในหลาย ๆ โครงการและอาศัยอยู่ในหลาย ๆ ระบบ
คุณสามารถทนทุกข์ทรมานมากกว่านั้น หรือคุณสามารถเล่นลอตเตอรี่ที่หวังว่าจะสูญเสีย หากคุณสร้างเวอร์ชันคุณมีโอกาสเล็กน้อยที่จะเกิดความผิดพลาด หากคุณถือว่า "เฮ้ฉันเดิมพันว่ายังไม่มีใครใช้ 1 เลย" อัตราต่อรองของคุณใหญ่กว่าเล็ก เป็นเพราะเราทุกคนคิดว่า 0 และ 1 นั้นยอดเยี่ยมที่คุณมีโอกาสสูงกว่าที่จะชนพวกเขา
-
เมื่อคุณสร้าง serialVersionUID (3567653491060394677L) แทนที่จะใช้ serialVersionUID (1L) คุณกำลังพูดอะไรบางอย่าง
คุณกำลังบอกว่าผู้คนอาจสร้างหรือสร้างหมายเลขรุ่นอื่น ๆ ด้วยตนเองในประวัติศาสตร์ของคลาสนี้และคุณไม่สนใจเพราะ Longs กำลังทำให้เป็นจำนวนมาก
ไม่ว่าจะด้วยวิธีใดเว้นแต่คุณจะรู้ประวัติของหมายเลขรุ่นอย่างสมบูรณ์เมื่อใช้ซีเรียลไลซ์คลาสในเอกภพทั้งที่มันมีอยู่หรือจะมีอยู่จริงคุณก็มีโอกาส หากคุณมีเวลาที่จะทำให้แน่ใจ 100% ว่า 1 คือ AOK ไปเลย ถ้านั่นเป็นการทำงานมากไปข้างหน้าและสร้างหมายเลขสุ่มสี่สุ่มห้า คุณมีโอกาสที่จะชนะลอตเตอรีมากกว่าที่จะผิดพลาด ถ้าเป็นเช่นนั้นให้ฉันรู้และฉันจะซื้อเบียร์ให้คุณ
ด้วยการพูดถึงการเล่นลอตเตอรีทั้งหมดนี้ฉันอาจทำให้คุณประทับใจว่า serialVersionUID นั้นสร้างขึ้นแบบสุ่ม ในความเป็นจริงตราบใดที่ช่วงของตัวเลขมีการกระจายอย่างเท่าเทียมกันในทุกค่าที่เป็นไปได้ของ Long ที่จะเป็นไปได้ อย่างไรก็ตามมันทำแบบนี้จริง:
http://docs.oracle.com/javase/6/docs/platform/serialization/spec/class.html#4100
ความแตกต่างเพียงอย่างเดียวที่คุณได้รับคือคุณไม่ต้องการแหล่งที่มาของการสุ่ม คุณกำลังใช้การเปลี่ยนแปลงในชั้นเรียนเพื่อเปลี่ยนผลลัพธ์ แต่ตามหลักการของนกพิราบก็ยังมีโอกาสที่มันจะผิดพลาดและมีการชนกัน เป็นไปได้ยากอย่างไม่น่าเชื่อ ขอให้โชคดีที่ได้รับเบียร์จากฉัน
อย่างไรก็ตามแม้ว่าชั้นเรียนจะมีชีวิตอยู่ในระบบเดียวและฐานรหัสเดียวการคิดว่าการเพิ่มจำนวนด้วยมือจะทำให้คุณไม่มีโอกาสชนจากการชนหมายความว่าคุณไม่เข้าใจมนุษย์ :)