เมื่อคุณทำให้อ็อบเจ็กต์เป็นอนุกรมใน Java คุณจะแปลงข้อมูลเป็นไบต์สตรีม แล้วแปลงกลับเป็นสำเนาของข้อมูลต้นฉบับในภายหลัง หากฟังดูสับสน ให้นึกถึงการทำให้เป็นอนุกรมในเงื่อนไขต่อไปนี้ คุณกำลังทำงานกับเอกสารแล้วบันทึกลงในฮาร์ดไดรฟ์ของคุณ ในลักษณะของการพูด กำลังจัดลำดับข้อมูลเพื่อให้คุณสามารถเรียกสำเนานั้นในภายหลัง การทำให้เป็นอนุกรมทำให้การถ่ายโอนข้อมูลบนเครือข่ายง่ายขึ้นและมีประสิทธิภาพมากขึ้น
สิ่งสำคัญคือคุณต้องเข้าใจพื้นฐานของ Java ก่อนทำซีเรียลไลซ์อ็อบเจ็กต์ หากคุณเคยใช้ภาษาการเขียนโปรแกรม เช่น Pascal และ C เวอร์ชันเก่า คุณจะรู้ว่าหากไม่มีการทำให้วัตถุเป็นอนุกรม โปรแกรมเมอร์จะต้องสร้างไฟล์ข้อความ I/O แยกต่างหากเพื่อจัดเก็บและโหลดข้อมูล การทำให้เป็นอนุกรมอ็อบเจ็กต์ใน Java ข้ามการสร้างไฟล์ข้อความนี้เพื่อเก็บข้อมูล ประหยัดเวลาและค่าใช้จ่ายในการเขียนโปรแกรม บทความต่อไปนี้มีขั้นตอนในการทำให้อ็อบเจ็กต์เป็นอนุกรมใน Java โค้ดตัวอย่างในบทความนี้ใช้โดยได้รับความอนุเคราะห์จาก Java Developers Almanac 1.4
ขั้นตอน
ขั้นตอนที่ 1. เปิดอ็อบเจ็กต์การเข้ารหัส Java ที่ต้องการซีเรียลไลซ์เซชันหรือสร้างใหม่ตั้งแต่ต้น
ขั้นตอนที่ 2 เลือกวัตถุใน Java ที่คุณต้องการทำให้เป็นอนุกรม
ในตัวอย่างนี้ เราจะเรียกวัตถุนั้นว่า "MyObject"
ขั้นตอนที่ 3 เปิดใช้งานการทำให้เป็นอนุกรมอ็อบเจ็กต์ใน Java โดยสร้างคลาส MyObject เพื่อใช้งานอินเตอร์เฟส java.io. Serialize
เพียงเพิ่มบรรทัดโค้ดต่อไปนี้ที่จุดเริ่มต้นของโค้ด แทนที่ "คลาสสาธารณะ MyObject" line.public คลาส MyObject ใช้ java.io. Serializable
ขั้นตอนที่ 4 ตอนนี้อ็อบเจ็กต์ของคุณเป็นแบบซีเรียลไลซ์ได้ ซึ่งหมายความว่าสามารถเขียนได้โดยเอาต์พุตสตรีม เช่นนี้
-
บรรทัดโค้ดต่อไปนี้แสดงวิธีการเขียน MyObject (หรืออ็อบเจ็กต์ที่ทำให้เป็นอนุกรม) ลงในไฟล์หรือดิสก์
ลอง{
// จัดลำดับวัตถุข้อมูลให้เป็นไฟล์
ObjectOutputStream out = ObjectOutputStream ใหม่ (FileOutputStream ใหม่ ("MyObject.ser"));
out.writeObject(วัตถุ);
out.close();
// จัดลำดับวัตถุข้อมูลให้เป็นอาร์เรย์ไบต์
ByteArrayOutputStream bos = ใหม่ ByteArrayOutputStream();
out = ใหม่ ObjectOutputStream(bos);
out.writeObject(วัตถุ);
out.close();
// รับไบต์ของวัตถุต่อเนื่อง
ไบต์ buf = bos.toByteArray();
} จับ (IOException จ) {
}
ขั้นตอนที่ 5. สามารถอ่านได้ดังนี้:
-
ลอง { ประตู FileInputStream = ใหม่ FileInputStream ("name_of_file.sav"); ObjectInputStream reader = ใหม่ ObjectInputStream(ประตู); MyObject x = MyObject ใหม่ (); x = (MyObject) reader.nextObject();}จับ (IOException e){ e.printStackTrace();}
ขั้นตอนที่ 6. รันโค้ดอ็อบเจ็กต์ซีเรียลไลซ์ภายในโปรแกรม Java เพื่อให้แน่ใจว่าทำงานได้อย่างมีประสิทธิภาพ (ทางเลือก)
ขั้นตอนที่ 7 บันทึกและปิดวัตถุต่อเนื่องใน Java
เคล็ดลับ
- การปรับปรุงการทำให้เป็นอนุกรมใน Java SE Development Kit 6 ช่วยให้คุณสามารถใช้ ObjectStreamClass ค้นหาวิธีการใดๆ เพื่อจัดการกับอ็อบเจ็กต์คลาสที่ไม่สามารถทำให้ซีเรียลไลซ์ได้
- เพื่อปรับปรุงเวลาในการอ่านและเขียนในแผนผังอ็อบเจ็กต์ขนาดใหญ่ ให้ใช้คีย์เวิร์ด "ชั่วคราว" สำหรับตัวแปรอินสแตนซ์ที่ไม่ต้องการการทำให้เป็นอนุกรม สิ่งนี้จะเพิ่มประสิทธิภาพโดยที่คุณไม่ต้องอ่านและเขียนข้อมูลที่ไม่จำเป็นในกระบวนการซีเรียลไลซ์เซชั่นอีกต่อไป
คำเตือน
- Java ออกเวอร์ชันใหม่ของชุดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์เกือบทุกปี เวอร์ชันใหม่รวมถึงการอัปเกรดและการเปลี่ยนแปลงวิธีที่คุณสามารถทำให้ Object เป็นอนุกรมใน Java ดังนั้น การตรวจสอบการเปลี่ยนแปลงในเวอร์ชันที่คุณใช้จึงเป็นสิ่งสำคัญ
- เมื่อทำให้เป็นอนุกรมอ็อบเจ็กต์ คุณจะไม่สามารถเข้ารหัสสตรีมข้อมูลได้ ดังนั้น คุณจะต้องพึ่งพาแอปพลิเคชันอื่นหรือกระบวนการขนส่งเครือข่ายสำรองเพื่อปกป้องข้อมูล หากจำเป็น
- ขณะนี้ไม่มีตัวเลือกที่ช่วยให้คุณสามารถเขียนวัตถุลงในไฟล์เข้าถึงโดยสุ่มได้ แต่คุณสามารถใช้กระแสข้อมูลขาเข้าของ Byte Array เป็นตัวยึดตำแหน่งเพื่ออ่านและเขียนวัตถุ อย่างไรก็ตาม ตรวจสอบให้แน่ใจว่าอ็อบเจ็กต์ทั้งหมดอยู่ในสตรีม Byte Array ไม่เช่นนั้นกระบวนการจะล้มเหลว