บทบาทของ serialVersionUID:
เพื่อรักษาความเข้ากันได้ของเวอร์ชันในระหว่างการทำให้เป็นอนุกรม การดีซีเรียลไลซ์จะยังคงรักษาเอกลักษณ์ของออบเจ็กต์เมื่อมีการอัปเกรดเวอร์ชัน
มีสองวิธีในการสร้าง:
หนึ่งคือค่าเริ่มต้น 1L ตัวอย่างเช่น: serialVersionUID ยาวสุดท้ายแบบคงที่ส่วนตัว = 1L;
หนึ่งคือการสร้างฟิลด์แฮช 64 บิตตามชื่อคลาส ชื่ออินเทอร์เฟซ วิธีการของสมาชิก และคุณลักษณะ ฯลฯ เช่น:
serialVersionUID แบบยาวคงที่ส่วนตัวสุดท้าย = xxxxL;
เมื่อคลาสของคุณใช้อินเทอร์เฟซ Serializable หากไม่ได้กำหนด serialVersionUID Eclipse จะจัดเตรียมสิ่งนี้
ฟังก์ชั่น prompt บอกให้คุณกำหนดมัน ใน Eclipse คลิกไอคอนคำเตือนในคลาส จากนั้น Eclipse จะดำเนินการ
วิธีการสร้างสองวิธีจะได้รับโดยอัตโนมัติ หากคุณไม่ต้องการกำหนด คุณก็สามารถทำได้เช่นกัน
คุณสามารถปิดและตั้งค่าได้ดังนี้:
หน้าต่าง ==> การตั้งค่า ==> Java ==> คอมไพเลอร์ ==> ข้อผิดพลาด/คำเตือน ==>
ปัญหาการเขียนโปรแกรมที่อาจเกิดขึ้น
เพียงเปลี่ยนคำเตือนของคลาส Serializable โดยไม่มี serialVersionUID เพื่อเพิกเฉย
หากคุณไม่พิจารณาถึงปัญหาความเข้ากันได้ ให้ปิดการทำงาน แต่เป็นการดีที่จะมีฟังก์ชันนี้ ตราบใดที่หมวดหมู่ใดๆ ใช้อินเทอร์เฟซแบบอนุกรมได้ Eclipse จะแสดงพร้อมต์คำเตือนหากไม่ได้เพิ่ม serialVersionUID นี้ คลาส Serializable เข้ากันได้แบบย้อนหลัง
หากคลาสของคุณเป็นแบบอนุกรมและบันทึกลงในฮาร์ดดิสก์ แต่ต่อมาคุณเปลี่ยนฟิลด์ของคลาส (เพิ่ม ลด หรือเปลี่ยนชื่อ) ข้อยกเว้นจะปรากฏขึ้นเมื่อคุณทำการดีซีเรียลไลซ์ ซึ่งจะทำให้เกิดปัญหาความเข้ากันไม่ได้
แต่เมื่อ serialVersionUID เหมือนกัน มันจะทำการดีซีเรียลไลซ์ฟิลด์ที่แตกต่างกันด้วยค่าเริ่มต้นของประเภท ซึ่งสามารถหลีกเลี่ยงปัญหาความไม่เข้ากัน