การทำให้เป็นอนุกรมและการทำให้เป็นภายนอกเป็นกระบวนการในการแปลงอ็อบเจ็กต์เป็นสตรีมไบต์และจัดเก็บสตรีมไบต์ในฐานข้อมูลหรือหน่วยความจำ คลาสที่ใช้อินเตอร์เฟส java.io.Serializable สามารถซีเรียลไลซ์ได้ ในทางกลับกัน การทำให้เป็นภายนอกใช้สำหรับการทำให้เป็นอนุกรมแบบกำหนดเองตามความต้องการในแอปพลิเคชัน การทำให้เป็นภายนอกขยาย java.io.Serializable
ซีเนียร์ เลขที่ | คีย์ | การทำให้เป็นอนุกรม | ภายนอก |
---|---|---|---|
1 | อินเทอร์เฟซ | ซีเรียลไลเซชันเป็นส่วนต่อประสานตัวทำเครื่องหมาย | Externalization มีสองเมธอด readExternal และ writeExternal |
2 | ตรรกะการนำไปใช้ | คลาสที่ใช้อินเทอร์เฟซนี้ให้ JVM รับผิดชอบในการทำให้เป็นอนุกรมหรือคงวัตถุ java ไว้ JVM ใช้ readObject และ writeObject สำหรับการทำให้เป็นอนุกรม | Externalization ให้การควบคุมตรรกะการใช้งานกับแอปพลิเคชันโดยแทนที่เมธอด readExternal และ writeExternal |
3 | วิธีละเว้นตัวแปร | ในการทำให้เป็นอันดับ JVM ละเว้นตัวแปรชั่วคราวในระหว่างการทำให้เป็นอนุกรมและดีซีเรียลไลซ์เซชันของวัตถุ java | โปรแกรมเมอร์สามารถเขียนตรรกะของตนเองเพื่อละเว้นตัวแปรบางตัวในระหว่างการทำให้ภายนอกของวัตถุจาวา |
4 | ประสิทธิภาพ | ในอินเทอร์เฟซแบบซีเรียลไลซ์ได้ใช้การสะท้อนซึ่งทำให้ประสิทธิภาพค่อนข้างช้า | Externalizable ช่วยให้ควบคุมแนวทางการนำไปใช้ได้อย่างเต็มที่ |
5 | วัตถุซีเรียลไลซ์เซชั่นด้วยการสืบทอด | 1. ถ้าซูเปอร์คลาสไม่สามารถทำให้เป็นอนุกรมได้ คลาสย่อยก็ยังสามารถทำให้เป็นอนุกรมได้ 2. ถ้าซับคลาสไม่ซีเรียลไลซ์ แต่ซูเปอร์คลาสนั้นทำให้ซีเรียลไลซ์ได้โดยอัตโนมัติ | เราสามารถนำไปใช้กับภายนอกได้เช่นกัน |
ตัวอย่างการทำภายนอกได้
class ExternalizableExample implements Externalizable { Integer id; @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeInt( id ); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { this.id = in.readInt(); } }
ตัวอย่างของการทำให้เป็นอนุกรม
class SerializableExample implements Serializable { private static final long serialVersionUID = 5081877L; String name; }