序列化就是把实体对象状态按照一定的格式写入到有序字节流,反序列化就是从有序字节流重建对象,恢复对象状态。
打个比方,你从家里要寄一台组装电脑给朋友,序列化和反序列化就好比是寄快递和收快递一样;
序列化就是要寄快递,反序列化就是要收快递;
java.io.ObjectOutputStream(表示对象输出流)
它的writeObject(Object obj)方法可以对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中;
这个过程就好比是你把电脑的主机、显示器、键盘、鼠标、音响等一个一个拆下来,包裹好,最后做个记号表明是你寄的,
这个记号就好比是Serializable或Externalizable接口;
java.io.ObjectInputStream:(表示对象输入流)
它的readObject()方法源输入流中读取字节序列,再把它们反序列化成为一个对象,并将其返回;
这个过程就好比是朋友收到了你的快递一样,把电脑的主机、显示器、键盘、鼠标、音响等一个一个重组起来,还是同一台电脑;
这就是电脑世界里的邮递工作;
序列化运行时使用一个称为 serialVersionUID 的版本号,
该序列号在反序列化过程中用于验证序列化对象的发送者和接收者是否为该对象加载了与序列化兼容的类;
在Eclipse中,定义:private static final long serialVersionUID = 1L;