การทำให้เป็นอนุกรมและการทำให้เป็นภายนอกเป็นกระบวนการในการแปลงอ็อบเจ็กต์เป็นสตรีมไบต์และจัดเก็บสตรีมไบต์ในฐานข้อมูลหรือหน่วยความจำ คลาสที่ใช้อินเตอร์เฟส 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;
}