Java中的類序列化和反序列化是指將對象轉換為二進制數據流并進行傳輸和存儲,以及將二進制數據流轉換為對象的過程。
public class MyClass implements java.io.Serializable { public String name; public int age; public double salary; }
為了讓一個類實現序列化接口,只需在類聲明時加上"implements java.io.Serializable"即可。
MyClass obj = new MyClass(); obj.name = "張三"; obj.age = 30; obj.salary = 5000.00; try { FileOutputStream fileOut = new FileOutputStream("employee.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(obj); out.close(); fileOut.close(); System.out.printf("Serialized data is saved in employee.ser"); } catch(IOException i) { i.printStackTrace(); }
在上述代碼中,我們將一個對象序列化并保存到文件中。通過使用FileOutputStream和ObjectOutputStream類,我們可以輕松地將對象轉換為字節流并將其寫入文件。
MyClass obj = null; try { FileInputStream fileIn = new FileInputStream("employee.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); obj = (MyClass) 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: " + obj.name); System.out.println("Age: " + obj.age); System.out.println("Salary: " + obj.salary);
在上述代碼中,我們將一個序列化的對象從文件中讀取并反序列化為對象。通過使用FileInputStream和ObjectInputStream類,我們可以輕松地從文件中讀取字節并將其轉換為對象。
Java的類序列化和反序列化可以在分布式系統、網絡傳輸、對象持久化等場景下發揮作用,使得數據的傳輸和存儲更加方便和高效。