小白教程

 找回密码
 立即注册
小白教程 首页 系列教程 Java系列教程 查看内容

Java 序列化

发布者: 小白教程



反序列化对象

下面的DeserializeDemo程序实例了反序列化,/tmp/employee.ser存储了Employee对象。

  1. import java.io.*;
  2. public class DeserializeDemo
  3. {
  4. public static void main(String [] args)
  5. {
  6. Employee e = null;
  7. try
  8. {
  9. FileInputStream fileIn = new FileInputStream("/tmp/employee.ser");
  10. ObjectInputStream in = new ObjectInputStream(fileIn);
  11. e = (Employee) in.readObject();
  12. in.close();
  13. fileIn.close();
  14. }catch(IOException i)
  15. {
  16. i.printStackTrace();
  17. return;
  18. }catch(ClassNotFoundException c)
  19. {
  20. System.out.println("Employee class not found");
  21. c.printStackTrace();
  22. return;
  23. }
  24. System.out.println("Deserialized Employee...");
  25. System.out.println("Name: " + e.name);
  26. System.out.println("Address: " + e.address);
  27. System.out.println("SSN: " + e.SSN);
  28. System.out.println("Number: " + e.number);
  29. }
  30. }

以上程序编译运行结果如下所示:

  1. Deserialized Employee...
  2. Name: Reyan Ali
  3. Address:Phokka Kuan, Ambehta Peer
  4. SSN: 0
  5. Number:101

这里要注意以下要点:

readObject() 方法中的try/catch代码块尝试捕获 ClassNotFoundException异常。对于JVM可以反序列化对象,它必须是能够找到字节码的类。如果JVM在反序列化对象的过程中找不到该类,则抛出一个 ClassNotFoundException异常。

注意,readObject()方法的返回值被转化成Employee引用。

当对象被序列化时,属性SSN的值为111222333,但是因为该属性是短暂的,该值没有被发送到输出流。所以反序列化后Employee对象的SSN属性为0。

12
上一篇:Java 泛型下一篇:Java 网络编程

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-11-28 07:34 , Processed in 0.023925 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

返回顶部