要實現(xiàn)Java中的序列化,可以按照以下步驟進(jìn)行:
Serializable
接口。這個接口是一個標(biāo)記接口,不包含任何方法,只是用于標(biāo)識該類可以被序列化。public class MyClass implements Serializable {
// class code here
}
ObjectOutputStream
類來實現(xiàn)。MyClass obj = new MyClass();
// 創(chuàng)建文件輸出流
FileOutputStream fileOut = new FileOutputStream("file.ser");
// 創(chuàng)建對象輸出流,將對象寫入文件輸出流
ObjectOutputStream out = new ObjectOutputStream(fileOut);
// 將對象寫入輸出流
out.writeObject(obj);
// 關(guān)閉輸出流
out.close();
fileOut.close();
// 創(chuàng)建文件輸入流
FileInputStream fileIn = new FileInputStream("file.ser");
// 創(chuàng)建對象輸入流,從文件輸入流中讀取對象
ObjectInputStream in = new ObjectInputStream(fileIn);
// 從輸入流中讀取對象
MyClass obj = (MyClass) in.readObject();
// 關(guān)閉輸入流
in.close();
fileIn.close();
需要注意的是,被序列化的類的所有非靜態(tài)成員變量都會被序列化,但是靜態(tài)成員變量不會被序列化。如果有某些成員變量不希望被序列化,可以使用transient
關(guān)鍵字進(jìn)行修飾。
此外,還可以自定義序列化和反序列化過程,通過實現(xiàn)writeObject()
和readObject()
方法來控制序列化和反序列化的過程。