Java序列化是指將對象轉換為字節流的過程,使得對象可以在網絡中傳輸或者存儲到文件中。
在Java中,實現序列化的方式是讓類實現Serializable接口。Serializable接口是一個空接口,沒有任何方法定義,它只是標記接口存在,用于表示該類可以被序列化。
要實現序列化,只需要在類的定義中添加implements Serializable語句即可。例如:
public class MyClass implements Serializable {
// 類的定義
}
實現了Serializable接口的類可以使用Java的序列化機制進行序列化和反序列化。序列化可以使用ObjectOutputStream類的writeObject方法將對象轉換為字節流,反序列化可以使用ObjectInputStream類的readObject方法將字節流轉換為對象。
下面是一個簡單的序列化和反序列化的例子:
import java.io.*;
public class Main {
public static void main(String[] args) {
// 序列化對象
MyClass myObject = new MyClass();
try {
FileOutputStream fileOut = new FileOutputStream("myobject.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(myObject);
out.close();
fileOut.close();
System.out.println("Object serialized successfully");
} catch (IOException e) {
e.printStackTrace();
}
// 反序列化對象
MyClass deserializedObject = null;
try {
FileInputStream fileIn = new FileInputStream("myobject.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
deserializedObject = (MyClass) in.readObject();
in.close();
fileIn.close();
System.out.println("Object deserialized successfully");
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
// 使用反序列化后的對象進行操作
if (deserializedObject != null) {
deserializedObject.doSomething();
}
}
}
class MyClass implements Serializable {
public void doSomething() {
System.out.println("Doing something...");
}
}