1. 程式人生 > >用非常硬核的JAVA序列化手段實現物件流的持久化儲存

用非常硬核的JAVA序列化手段實現物件流的持久化儲存

[toc] #### 背景 在OOP(面向物件程式設計)中處處是物件,我們當然希望可以有一種資料格式來儲存這種物件的集合,以實現持久化。比如部門類所形成的部門物件集合,員工類所形成的員工物件集合,甚至是這樣一個類所形成的物件:公司中有多個部門,每個部門有多個員工,我們希望將這樣一個物件以檔案的方式實現持久化儲存。 #### 物件流的概念 為實現物件的持久化儲存,我們需要引入Java語言的物件序列化(object serialization)機制,這種機制可以將任何物件輸出到流中:比如 ```java /** *流物件 */ Object object = new Object(); //建立物件流並輸出到檔案object.dat ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream("c:\\object.dat")); //將object物件寫到檔案中 output.writeObject(object); ObjectInputStream input = new ObjectInputStream(new FileInputStream("c:\\object.dat")); object = input.readObject(); ``` #### 物件流例項 ##### 引入一張組織結構圖 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200527163853533.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2pwZ3podQ==,size_16,color_FFFFFF,t_70) ##### 定義組織架構圖的類 - 公司:代表了組織架構的外在存在;公司是由部門和職員組成的一個完整實體。 - 部門:代表了組織架構中的運作單位;部門按型別不同可以分為不同的業務部門。 - 職員:代表了組織架構中的最小單位;職員按職位不同存在於不同的業務部門。 ```java /** * 用物件流儲存資訊--公司類 * * @author zhuhuix * @date 2020-05-27 */ class Company implements Serializable { //公司id private int id; //公司名稱 private String name; //公司部門列表 private List