要實(shí)現(xiàn)Java中的對(duì)象序列化,需要按照以下步驟進(jìn)行:
Serializable
接口。Serializable
接口是一個(gè)標(biāo)記接口,不包含任何方法,只是用來標(biāo)記該類可以被序列化。public class MyClass implements Serializable {
// 類的內(nèi)容
}
ObjectOutputStream
對(duì)象來將對(duì)象序列化為字節(jié)流。MyClass obj = new MyClass();
try {
FileOutputStream fileOut = new FileOutputStream("obj.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(obj);
out.close();
fileOut.close();
} catch (IOException i) {
i.printStackTrace();
}
ObjectInputStream
對(duì)象來從字節(jié)流中反序列化對(duì)象。MyClass obj = null;
try {
FileInputStream fileIn = new FileInputStream("obj.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
obj = (MyClass) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
} catch (ClassNotFoundException c) {
c.printStackTrace();
}
以上就是實(shí)現(xiàn)Java中序列化的基本步驟。需要注意的是,被序列化的類的成員變量也必須是可序列化的,否則會(huì)拋出NotSerializableException
異常。如果某個(gè)成員變量不希望被序列化,可以使用transient
關(guān)鍵字標(biāo)記。