/*
下面的程序说明了怎样实现对象序列化和反序列化。它由实例化一个MyClass类的对象开始。该对象有三个实例变量,它们的类型分别是String,int和double。这是我们希望存储和恢复的信息。
FileOutputStream被创建,引用了一个名为“serial”的文件。为该文件流创建一个ObjectOutputStream。ObjectOutputStream 的writeObject( )方法用来序列化对象。对象的输出流被刷新和关闭。
然后,引用名为“serial”的文件创建一个FileInputStream类并为该文件创建一个ObjectInputStream类。ObjectInputStream 的readObject( )方法用来反序列化对象。然后对象输入流被关闭。
注意MyClass被定义成实现Serializable接口。如果不这样做,将会引发一个NotSerializableException异常。试图做一些把MyClass实例变量声明成transient的实验。那些数据在序列化过程中不被保存
*/
import java.io.*;class MyClass implements Serializable{ String s; int i; double d; public MyClass (String s,int i,double d){ this.s = s; this.i = i; this.d = d; } public String toString(){ return "s=" + s + "; i=" + i + "; d=" + d; }}class SerializationDemo{ public static void main(String[] args){ //Object serialization. try{ MyClass object1 = new MyClass("Evan",9,9.9e10); System.out.println("object1 : " +object1); FileOutputStream fos = new FileOutputStream("serial"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(object1); oos.flush(); oos.close(); }catch(Exception e){ System.out.println("Exception during serialization :" + e); System.exit(0); } //Object deserialization. try{ MyClass object2 ; FileInputStream fis = new FileInputStream("serial"); ObjectInputStream ois = new ObjectInputStream(fis); object2 = (MyClass)ois.readObject(); ois.close(); System.out.println("object2 : " +object2); }catch(Exception e){ System.out.println("Exception during serialization :" + e); System.exit(0); } }}
文章来源:[url=http://blog.163.com/ccbobo_cat/blog/static/320994622009616101541196]http://blog.163.com/ccbobo_cat/blog/static/320994622009616101541196[/url]