Java序列化和反序列化是在Java編程語言中非常重要的兩個概念。在Java中,對象是常見的數據結構,但是當需要將對象存儲在磁盤上或在網絡上傳輸時,就需要對對象進行序列化操作。序列化將對象轉換為一系列字節,以便可以在需要時重新構建它。反序列化則是將序列化后的字節重新構建為對象的過程。
Java序列化和反序列化的過程非常簡單,基本上只需要創建 InputStream 和 OutputStream 對象,然后使用 ObjectInputStream 和 ObjectOutputStream 將對象寫入和讀出。下面是一段實現Java序列化和反序列化的示例代碼:
public class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } } try { //序列化 FileOutputStream fileOut = new FileOutputStream("person.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); Person person = new Person("Tom", 20); out.writeObject(person); out.close(); fileOut.close(); //反序列化 FileInputStream fileIn = new FileInputStream("person.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); Person person = (Person) in.readObject(); in.close(); fileIn.close(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }
在上面的代碼中,我們首先定義了一個 Person 類,該類實現了 Serializable 接口,這個接口告訴Java編譯器這個類可以被序列化。接下來,在序列化過程中,我們創建了一個 FileOutputStream 對象,用于創建包含序列化數據的文件。我們還創建了一個 ObjectOutputStream 對象,用于將 Person 對象序列化并寫入文件。在反序列化過程中,我們使用了 FileInputStream 和 ObjectInputStream 對象,用于讀取之前序列化的 Person 對象并重新構建出來。
總的來說,Java序列化和反序列化的過程就是將對象轉換為字節并存儲在磁盤或發送到網絡上,在需要時重新構建出該對象。這允許我們創建可靠的數據交換協議,并能將對象傳輸到其他計算機或應用程序中。