# 背景
java對象是在jvm中,如果jvm銷毀,那麼對象都不存在了。如果想繼續使用java對象的話,需要用到序列化,将java中的對象轉化為位元組序列,用于存儲和運輸;
那麼可以将DB了解為一種序列化,将java對象序列化後存儲在DB中,将java對象儲存在文本中也是一種序列化
# 細節
需要被序列化的類,需要實作Serializable接口
雖然Serializable接口是空的,沒有任何方法,但也要實作,起到辨別的作用
同一位元組流中的引用是得到儲存的
User user = new User("jwen");
Order o1 = new Order(user, "o1");
Order o2 = new Order(user, "o2");
将這兩個對象o1和o2序列化儲存在同一文本中(同一輸出流),會發現兩個對象的o1.user == o2.user
但将兩個對象分别儲存在不同檔案中,file1和file2的話,引用是不一樣的 o1.user != o2.user
反序列化沒有調用構造函數
public class User implements Serializable {
private String name;
private int id = 1;
public User(String name, int id) {
System.out.println("構造函數調用");
this.name = name;
}
}
這裡的構造方法不會被調用
序列化Id辨別版本資訊
private static final long serialVersionUID = -5809782578272943999L;
# 後記
推薦部落格:https://www.cnblogs.com/xdp-gacl/p/3777987.html
雖千萬人,吾往矣!