Java 對象序列化的意義:
Java 對象序列化是將 Java 對象轉(zhuǎn)換成字節(jié)流的過程,使得這些字節(jié)可在網(wǎng)絡(luò)上傳輸或被永久地保存在本地文件系統(tǒng)中。
Java 對象序列化的主要作用是將對象在網(wǎng)絡(luò)上傳輸或保存到文件中,使得在不同 JRE 或者不同 JVM 運行的程序之間可以直接傳遞對象,而不需要手動構(gòu)造對象。
public class Student implements Serializable { private String name; private int age; private String gender; public Student(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } // 省略 setter 和 getter 方法 }
在將一個 Java 對象序列化時,需要實現(xiàn) Serializable 接口。
反序列化的實現(xiàn):
反序列化即將一個字節(jié)流轉(zhuǎn)換成 Java 對象的過程。Java 對象的反序列化必須滿足兩個條件:
1. Java 對象必須實現(xiàn) Serializable 接口;
2. 反序列化時需要通過 ObjectInputStream 對象對序列化的字節(jié)進行解析,將字節(jié)流還原為 Java 對象。
public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream("student.bin"); ObjectInputStream ois = new ObjectInputStream(fis); Student student = (Student) ois.readObject(); System.out.println(student); ois.close(); }
反序列化時要注意異常的處理,如將字節(jié)流轉(zhuǎn)化為 Java 對象時可能出現(xiàn) ClassNotFoundException 異常。