天天看點

什麼是Java序列化?如何實作序列化?

 一、什麼是序列化: 序列化了解成“打碎”是可以的,不過在書本上的名詞就是将對象轉換成二進制。    

二、在java中如何實作序列化: 首先我們要把準備要序列化類,實作 serializabel接口 例如:我們要person類裡的name和age都序列化

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<code>import</code> <code>java.io.serializable; </code>

<code>public</code> <code>class</code> <code>person </code><code>implements</code> <code>serializable {</code>

<code>    </code><code>//本類可以序列化</code>

<code>    </code><code>private</code> <code>string name ; </code>

<code>    </code><code>private</code> <code>int</code> <code>age ;</code>

<code>    </code><code>public</code> <code>person(string name,</code><code>int</code> <code>age)</code>

<code>    </code><code>{ </code>

<code>        </code><code>this</code><code>.name = name ; </code><code>this</code><code>.age = age ;</code>

<code>    </code><code>} </code>

<code>    </code><code>public</code> <code>string tostring()</code>

<code>    </code><code>{</code>

<code>        </code><code>return</code> <code>"姓名:"</code> <code>+ </code><code>this</code><code>.name + </code><code>",年齡"</code> <code>+ </code><code>this</code><code>.age ;</code>

<code>}</code>

 然後:我們将name和age序列化(也就是把這2個對象轉為二進制,統族了解為“打碎”)

15

16

17

18

19

20

21

<code>package</code> <code>org.lxh.serdemo; </code>

<code>import</code> <code>java.io.file;</code>

<code>import</code> <code>java.io.fileoutputstream; </code>

<code>import</code> <code>java.io.objectoutputstream ;</code>

<code>public</code> <code>class</code> <code>objectoutputstreamdemo</code>

<code>{</code>

<code>    </code><code>//序列化 </code>

<code>    </code><code>public</code> <code>static</code> <code>void</code> <code>main(string[] args) </code><code>throws</code> <code>exception </code>

<code>        </code><code>//序列化後生成指定檔案路徑 </code>

<code>        </code><code>file file = </code><code>new</code> <code>file(</code><code>"d:"</code> <code>+ file.separator + </code><code>"person.ser"</code><code>) ;</code>

<code>        </code><code>objectoutputstream oos = </code><code>null</code> <code>;</code>

<code>        </code><code>//裝飾流(流)</code>

<code>        </code><code>oos = </code><code>new</code> <code>objectoutputstream(</code><code>new</code> <code>fileoutputstream(file)) ; </code>

<code>        </code><code>//執行個體化類 </code>

<code>        </code><code>person per = </code><code>new</code> <code>person(</code><code>"張三"</code><code>,</code><code>30</code><code>) ;</code>

<code>        </code><code>oos.writeobject(per) ;</code>

<code>        </code><code>//把類對象序列化</code>

<code>        </code><code>oos.close() ;</code>

 序列化是将對象狀态轉換為可保持或傳輸的格式的過程。說明白點就是你可以用對象輸出流輸出到檔案.如果不序列化輸出的話.很可能會亂!

 實作方式是實作java.io.serializable接口.這個接口不需要實作任何具體方法.隻要implements java.io.serializable 就好了

java中的序列化機制能夠将一個執行個體對象(隻序列化對象的屬性值,而不會去序列化什麼所謂的方法。)的狀态資訊寫入到一個位元組流中使其可以通過socket進行傳輸、或者持久化到存儲資料庫或檔案系統中;然後在需要的時候通過位元組流中的資訊來重構一個相同的對象。

一般而言,要使得一個類可以序列化,隻需簡單實作java.io.serializable接口即可。