คำตอบสำหรับคำถามนี้อาจจะแปลกใจ ไม่เคยหรือมากกว่าแนบเนียนเฉพาะเมื่อคุณถูกบังคับให้ทำงานร่วมกันกับรหัสเดิม นี่คือคำแนะนำในEffective Java, 3rd Editionโดย Joshua Bloch:
ไม่มีเหตุผลที่จะใช้การทำให้เป็นอันดับ Java ในระบบใหม่ใด ๆ ที่คุณเขียน
Mark Reinhold หัวหน้าสถาปนิกของออราเคิลกำลังทำสถิติสูงสุด ว่าการลบกลไกการจัดลำดับ Java ปัจจุบันเป็นเป้าหมายระยะยาว
ทำไมการทำให้ซีเรียลไลซ์เซชั่นของ Java มีข้อบกพร่อง
Java จัดให้เป็นส่วนหนึ่งของภาษาของรูปแบบการทำให้เป็นอันดับซึ่งคุณสามารถเลือกใช้โดยใช้Serializable
ส่วนต่อประสาน รูปแบบนี้มีข้อบกพร่องที่ดื้อดึงหลายประการและควรถือว่าเป็นการทดสอบที่ล้มเหลวโดยนักออกแบบภาษา Java
- มันลึกซึ้งแสร้งทำเป็นว่าสามารถพูดคุยเกี่ยวกับแบบฟอร์มต่อเนื่องของวัตถุ แต่มีรูปแบบการทำให้เป็นอนุกรมจำนวนมากอย่างไม่ จำกัด ทำให้เกิดรูปแบบที่เป็นอนุกรมจำนวนมากอย่างไม่ จำกัด โดยการกำหนดรูปแบบหนึ่งโดยไม่ต้องเปลี่ยนรูปแบบใด ๆ แอปพลิเคชันไม่สามารถใช้รูปแบบที่เหมาะสมที่สุดสำหรับพวกเขา
- มันถูกนำมาใช้เป็นวิธีการเพิ่มเติมของการสร้างวัตถุซึ่งข้ามเงื่อนไขใด ๆ ที่ตรวจสอบการก่อสร้างของคุณหรือวิธีการโรงงานดำเนินการ ยกเว้นในกรณีที่มีข้อผิดพลาดมีแนวโน้มที่จะเกิดข้อผิดพลาดและยากในการทดสอบรหัสการลดความเสี่ยงพิเศษรหัสของคุณอาจมีจุดอ่อนด้านความปลอดภัยที่อ้าปากค้าง
- การทดสอบการทำงานร่วมกันของเวอร์ชันที่แตกต่างกันของแบบฟอร์มต่อเนื่องนั้นยากมาก
- การจัดการกับวัตถุที่ไม่เปลี่ยนรูปนั้นเป็นสิ่งที่ลำบาก
จะทำอย่างไรแทน
ใช้โครงร่างการทำให้เป็นอนุกรมแทนซึ่งคุณสามารถควบคุมได้อย่างชัดเจนแทน เช่น Protocol Buffers, JSON, XML หรือโครงร่างที่กำหนดเองของคุณเอง