让我们先定义序列化,然后我们可以谈谈为什么它如此有用。
序列化只是将现有对象转换为字节数组。此字节数组表示对象的类,对象的版本和对象的内部状态。这个字节数组可以在JVM运行相同的代码来传输/读取对象之间使用。
为什么我们要这样做?
有几个原因:
>通信:如果有两台机器运行相同的代码,并且他们需要通信,一个简单的方法是一个机器构建一个对象的信息,它想传输,然后序列化该对象到另一个机器。这不是最好的沟通方式,但它完成了工作。>持久性:如果要将特定操作的状态存储在数据库中,可以轻松地将其序列化为字节数组,并存储在数据库中以供稍后检索。>深度复制:如果你需要一个对象的精确副本,并且不想去编写你自己的专门的clone()类的麻烦,只需将对象序列化为一个字节数组,然后反序列化它到另一个目标实现这个目标。>缓存:真的只是上面的一个应用程序,但有时一个对象需要10分钟来构建,但只需要10秒去序列化。所以,不是坚持在内存中的巨型对象,只是通过序列化缓存到一个文件,并在以后当需要时读取它。>交叉JVM同步:序列化可以在不同的JVM上运行,这些JVM可能在不同的体系结构上运行。