Latest web development tutorials
×

Java หลักสูตร

Java หลักสูตร Java แนะนำโดยย่อ Java การกำหนดค่าการพัฒนาสภาพแวดล้อม Java พื้นฐานไวยากรณ์ Java วัตถุและการเรียน Java ชนิดข้อมูลพื้นฐาน Java ประเภทตัวแปร Java การปรับเปลี่ยน Java ผู้ประกอบการ Java โครงสร้างห่วง Java สาขาโครงสร้าง Java Number หมวดหมู่ Java Character หมวดหมู่ Java String หมวดหมู่ Java StringBuffer Java แถว Java วันที่เวลา Java นิพจน์ปกติ Java ทาง Java Stream,File,IO Java Scanner หมวดหมู่ Java การจัดการข้อยกเว้น

Java เชิงวัตถุ

Java สืบทอด Java Override/Overload Java polymorphism Java ระดับนามธรรม Java บรรจุภัณฑ์ Java อินเตอร์เฟซ Java บรรจุภัณฑ์

Java การสอนที่ทันสมัย

Java โครงสร้างข้อมูล Java คอลเลกชันกรอบ Java ยาชื่อสามัญ Java การทำให้เป็นอันดับ Java เขียนโปรแกรมเครือข่าย Java ส่ง Email Java การเขียนโปรแกรมแบบมัลติเธรด Java Appletรากฐาน Java เอกสารความคิดเห็น Java ตัวอย่าง Java 8 คุณสมบัติใหม่ Java MySQL สัมพันธ์

Java อนุกรม

Java ให้กลไกวัตถุอนุกรมซึ่งวัตถุสามารถแสดงเป็นลำดับของไบต์ลำดับไบต์รวมถึงประเภทของข้อมูลของวัตถุข้อมูลเกี่ยวกับวัตถุและชนิดของข้อมูลที่จัดเก็บในวัตถุ .

หลังจากที่ไฟล์จะถูกเขียนไปยังวัตถุที่ต่อเนื่องสามารถอ่านออกจากไฟล์และมันก็เป็น deserialized, ที่อยู่, ประเภทของข้อมูลวัตถุวัตถุข้อมูลและชนิดข้อมูลวัตถุที่สามารถนำมาใช้ในหน่วยความจำ วัตถุใหม่

กระบวนการทั้งหมดเป็นโปรแกรม Java Virtual Machine (JVM) อิสระที่มีบนแพลตฟอร์มเนื่องวัตถุสามารถ deserialize วัตถุบนแพลตฟอร์มที่แตกต่างอย่างสิ้นเชิง

ObjectInputStream และคลาส ObjectOutputStream ข้อมูลระดับสูงลำธารอนุกรมและวิธีการที่พวกเขามีวัตถุต่อต้านลำดับ

ระดับ ObjectOutputStream มีวิธีการเขียนจำนวนมากเพื่อเขียนความหลากหลายของประเภทข้อมูล แต่ข้อยกเว้นวิธีพิเศษ:

public final void writeObject(Object x) throws IOException

วิธีการดังกล่าวเป็นอันดับวัตถุและส่งไปยังกระแสเอาท์พุท ระดับ ObjectInputStream ที่คล้ายกันมีดังต่อไปนี้วิธีการ deserialize วัตถุ:

public final Object readObject() throws IOException, 
                                 ClassNotFoundException

วิธีนี้ใช้เวลาวัตถุถัดไปจากกระแสและวัตถุที่ถูก deserialized ค่าตอบแทนของมันคือวัตถุดังนั้นคุณจำเป็นต้องแปลงเป็นชนิดข้อมูลที่เหมาะสม

เพื่อแสดงให้เห็นเป็นอันดับ Java เป็นวิธีการทำงานผมจะใช้การกวดวิชาระดับพนักงานดังกล่าวก่อนถ้าเรากำหนดชั้นของพนักงานต่อไปนี้ซึ่งใช้อินเตอร์เฟซ Serializable

public class Employee implements java.io.Serializable
{
   public String name;
   public String address;
   public transient int SSN;
   public int number;
   public void mailCheck()
   {
      System.out.println("Mailing a check to " + name
                           + " " + address);
   }
}

โปรดทราบว่าเป็นอันดับวัตถุชั้นในเพื่อที่จะประสบความสำเร็จสองเงื่อนไขจะต้องพบ:

ชั้นต้องใช้วัตถุ java.io.Serializable

คุณลักษณะดังกล่าวทั้งหมดจะต้อง serializable หากมีคุณสมบัติที่ไม่ได้เป็น serializable ทรัพย์สินที่ต้องระบุไว้ในเวลาสั้น ๆ

หากคุณต้องการที่จะรู้ว่าไม่ว่าจะเป็นระดับมาตรฐาน Java เป็น serializable ดูเอกสารสำหรับชั้นนี้ ทดสอบว่าเป็นตัวอย่างของชั้นเรียนสามารถต่อเนื่องเป็นเรื่องง่ายมากเพียงแค่ต้องดูชั้นยังไม่ได้ประสบความสำเร็จในอินเตอร์เฟซ java.io.Serializable


วัตถุเนื่อง

ระดับ ObjectOutputStream จะใช้ในการเป็นอันดับวัตถุ SerializeDemo ตัวอย่างต่อไปนี้ instantiates วัตถุพนักงานและวัตถุเป็นต่อเนื่องไปยังแฟ้ม

หลังจากที่โปรแกรมนี้จะถูกดำเนินการจะสร้างไฟล์ชื่อ employee.ser โปรแกรมนี้มีการส่งออกไม่ได้ แต่คุณสามารถอ่านรหัสที่จะเข้าใจบทบาทของโปรแกรม

หมายเหตุ: เมื่อวัตถุอยู่ต่อเนื่องไปยังแฟ้มให้สอดคล้องกับอนุสัญญา Java มาตรฐานคือจะยื่นขยาย .ser

import java.io.*;

public class SerializeDemo
{
   public static void main(String [] args)
   {
      Employee e = new Employee();
      e.name = "Reyan Ali";
      e.address = "Phokka Kuan, Ambehta Peer";
      e.SSN = 11122333;
      e.number = 101;
      try
      {
         FileOutputStream fileOut =
         new FileOutputStream("/tmp/employee.ser");
         ObjectOutputStream out = new ObjectOutputStream(fileOut);
         out.writeObject(e);
         out.close();
         fileOut.close();
         System.out.printf("Serialized data is saved in /tmp/employee.ser");
      }catch(IOException i)
      {
          i.printStackTrace();
      }
   }
}

วัตถุ deserialize

โปรแกรมตัวอย่าง DeserializeDemo deserialization ต่อไปนี้ / tmp / employee.ser เก็บไว้วัตถุพนักงาน

import java.io.*;
public class DeserializeDemo
{
   public static void main(String [] args)
   {
      Employee e = null;
      try
      {
         FileInputStream fileIn = new FileInputStream("/tmp/employee.ser");
         ObjectInputStream in = new ObjectInputStream(fileIn);
         e = (Employee) in.readObject();
         in.close();
         fileIn.close();
      }catch(IOException i)
      {
         i.printStackTrace();
         return;
      }catch(ClassNotFoundException c)
      {
         System.out.println("Employee class not found");
         c.printStackTrace();
         return;
      }
      System.out.println("Deserialized Employee...");
      System.out.println("Name: " + e.name);
      System.out.println("Address: " + e.address);
      System.out.println("SSN: " + e.SSN);
      System.out.println("Number: " + e.number);
    }
}

รวบรวมและเรียกใช้โปรแกรมดังกล่าวข้างต้นผลมีดังนี้

Deserialized Employee...
Name: Reyan Ali
Address:Phokka Kuan, Ambehta Peer
SSN: 0
Number:101

ที่นี่เราจะต้องทราบจุดต่อไปนี้:

readObject () วิธีการในความพยายามลอง / จับบล็อกที่จะจับข้อยกเว้น ClassNotFoundException สำหรับ JVM สามารถ deserialize วัตถุนั้นจะต้องสามารถที่จะหาชั้นเรียน bytecode JVM หากไม่สามารถหาชั้นในวัตถุกระบวนการ deserialization ที่โยนยกเว้น ClassNotFoundException

โปรดทราบว่าค่าตอบแทน readObject () วิธีการจะถูกแปลงเป็นพนักงานอ้างอิง

เมื่อวัตถุเป็นอันดับมูลค่าของทรัพย์สิน SSN 111 222 333 แต่เป็นเพราะสถานที่เป็นระยะสั้นค่าไม่ได้ส่งไปยังกระแสเอาท์พุท ดังนั้น SSN แอตทริบิวต์วัตถุพนักงาน deserialized คือ 0