欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java對象的序列化和反序列化

陳怡靜1年前8瀏覽0評論

Java中的對象序列化和反序列化是一種將Java對象轉換為字節(jié)序列并將其存儲在文件或通過網絡傳輸的過程,并且可以在需要時將其還原成原始的對象的方法。

在Java中,對象序列化和反序列化是通過Java.io.Serializable接口來實現的。 Serializable接口是一個標記接口,沒有方法。 任何將實現Serializable接口的類的實例都可以通過對象序列化和反序列化進行存儲和恢復。

public class Employee implements Serializable {
public String name;
public String address;
public transient int SSN;
public int number;
public void mailCheck() {
System.out.println("Mailing a check to " + name + " " + address);
}
}

在上述例子中,Employee類實現了Serializable接口。這意味著可以使用Java序列化API將該類的實例轉換為字節(jié)序列。

下面是一個將Java對象序列化并寫入文件的示例。

try {
FileOutputStream fileOut = new FileOutputStream("employee.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(e);
out.close();
fileOut.close();
System.out.println("Serialized data is saved in employee.ser");
} catch (IOException i) {
i.printStackTrace();
}

在上述示例中,ObjectOutputStream類用于將Employee對象e序列化為字節(jié)。然后,對象將被寫入名為employee.ser的文件。在此過程中,所有實現Serializable接口的對象狀態(tài)也將被寫入文件。

下面是一個從文件讀取Java對象并將其反序列化的示例。

try {
FileInputStream fileIn = new FileInputStream("employee.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (Employee) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
return;
} catch (ClassNotFoundException c) {
System.out.println("Employee class not found");
c.printStackTrace();
return;
}

在上述示例中,ObjectInputStream類從名為employee.ser的文件中讀取Employee對象e的字節(jié)數據。隨后,讀取的數據被反序列化為Employee對象。