Java序列化和反序列化在面試中經常被問到,因為這是Java程序員需要掌握的重要知識之一。
首先,讓我們來了解一下Java序列化。Java序列化是將Java對象轉換為字節序列的過程。這對于將對象存儲在文件中或在網絡上進行傳輸非常有用。Java序列化可以通過將對象寫入ObjectOutputStream中來完成。
Student student = new Student("Tom", "Male", 18);
FileOutputStream out = new FileOutputStream("student.txt");
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject(student);
oos.close();
out.close();
接下來是Java反序列化。Java反序列化是將字節序列轉換為Java對象的過程。這對于從文件中讀取對象或從網絡上接收對象非常有用。Java反序列化可以通過讀取ObjectInputStream來完成。
FileInputStream in = new FileInputStream("student.txt");
ObjectInputStream ois = new ObjectInputStream(in);
Student student = (Student)ois.readObject();
ois.close();
in.close();
System.out.println("Name:" + student.getName() + " Gender:" + student.getGender() + " Age:" + student.getAge());
需要注意的是,如果類沒有實現Serializable接口,則無法序列化和反序列化該類的對象。此外,對象的類名、字段值以及所屬類的簽名都將被序列化。
在Java開發中,序列化的應用非常廣泛。例如,在分布式系統中,我們可以通過序列化將遠程對象傳輸到本地。在Web開發中,我們可以通過序列化將表單數據封裝到對象中,然后通過網絡傳輸到服務器端。