Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่างการทำให้เป็นอันดับและการทำให้เป็นภายนอกใน Java


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