由于序列化和反序列化概念太抽象,还是通过两个场景来理解为上策。
(场景一)以下面提到的User.java为例。这个VO类中的字段在程序运行后都在堆内存中,程序执行完毕后内存得到释放,字段的值也不复存在。如果现在计算机要把这个类的实例发送到另一台机器、或是想保存这个VO类的实例到数据库(持久化对象),以便以后再取出来用。这时就需要对这个类进行序列化,便于传送或保存。用的时候再反序列化重新生成这个对象的实例。
(场景二)以搬桌子为例,桌子太大了不能通过比较小的门,我们要把它拆了再运进去,这个拆桌子的过程就是序列化。同理,反序列化就是等我们需要用桌子的时候再把它组合起来,这个过程就是反序列化。