private transient Book book;//用transient关键字声明book
//这个方法会在序列化的过程中被调用 private void writeObject(ObjectOutputStream out){ try { out.defaultWriteObject(); //这个方法会把这当前中非静态变量和非transient变量写到流中 //在这里我们就把name写到了流中。 //因为我们要保存Book的状态,所以我们还要想办法把其状态写入流中 out.writeInt(book.getIsbn());//ObjectOutputStream中提供了写基本类型数据的方法 //out.close();//注意,这句千万不能有,否刚将直接导致写入失败 } catch (IOException e) { e.printStackTrace(); } } //这个方法会在反序列化的过程中被调用 private void readObject(ObjectInputStream in){ try { in.defaultReadObject(); //和defaultWriteObject()方法相对应,默认的反序列化方法,会从流中读取 //非静态变量和非transient变量 int isbn = in.readInt(); //用这个方法来读取一个int型值,这里我们是读取书号 book = new Book(isbn); //这里我们就通过读取的 保存的状态构造 了一个和原来一样的Book对象 //in.close();同样的这句也不能有 } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } }
原文:http://blog.csdn.net/tayanxunhua/article/details/20119809