下面的DeserializeDemo程序?qū)嵗朔葱蛄谢?tmp/employee.ser存儲(chǔ)了Employee對(duì)象。
import java.io.*; public class DeserializeDemo { public static void main(String [] args) { Employee e = null; try { FileInputStream fileIn = new FileInputStream("/tmp/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; } System.out.println("Deserialized Employee..."); System.out.println("Name: " + e.name); System.out.println("Address: " + e.address); System.out.println("SSN: " + e.SSN); System.out.println("Number: " + e.number); } }
以上程序編譯運(yùn)行結(jié)果如下所示:
Deserialized Employee... Name: Reyan Ali Address:Phokka Kuan, Ambehta Peer SSN: 0 Number:101
這里要注意以下要點(diǎn):
readObject() 方法中的try/catch代碼塊嘗試捕獲 ClassNotFoundException異常。對(duì)于JVM可以反序列化對(duì)象,它必須是能夠找到字節(jié)碼的類(lèi)。如果JVM在反序列化對(duì)象的過(guò)程中找不到該類(lèi),則拋出一個(gè) ClassNotFoundException異常。
注意,readObject()方法的返回值被轉(zhuǎn)化成Employee引用。
當(dāng)對(duì)象被序列化時(shí),屬性SSN的值為111222333,但是因?yàn)樵搶傩允嵌虝旱,該值沒(méi)有被發(fā)送到輸出流。所以反序列化后Employee對(duì)象的SSN屬性為0。
2015職稱(chēng)計(jì)算機(jī)考試書(shū)PowerPoint2007中 .. 定價(jià):¥45 優(yōu)惠價(jià):¥42 更多書(shū)籍 | |
2015年全國(guó)職稱(chēng)計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書(shū)籍 |