在Java中,如果需要將一個對象序列化(即將對象轉換為字節流以便存儲或傳輸),可以讓該對象實現Serializable
接口。
要調用Serializable
接口,只需要在想要序列化的類的聲明中,使用implements
關鍵字引入該接口。例如:
public class MyClass implements Serializable {
// 類的代碼
}
然后,可以使用ObjectOutputStream
類將對象寫入輸出流,實現序列化操作。例如:
MyClass obj = new MyClass();
try {
FileOutputStream fileOut = new FileOutputStream("file.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(obj);
out.close();
fileOut.close();
System.out.println("對象已經成功序列化");
} catch (IOException e) {
e.printStackTrace();
}
在這個例子中,MyClass
對象被寫入名為file.ser
的文件中。注意,如果要序列化的類中包含其他對象,這些對象也必須實現Serializable
接口。
要進行反序列化操作(即從字節流中恢復對象),可以使用ObjectInputStream
類。例如:
try {
FileInputStream fileIn = new FileInputStream("file.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
MyClass obj = (MyClass) in.readObject();
in.close();
fileIn.close();
System.out.println("對象已經成功反序列化");
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
在這個例子中,從名為file.ser
的文件中讀取字節流,并使用類型轉換將其轉換為MyClass
對象。