Java中序列化的目的是什么?

我已经读了很多关于序列化的文章,以及它是如何如此美好和伟大,但没有一个论点足够令人信服。我想知道是否有人真的能告诉我,通过序列化一个类,我们能真正实现什么

让我们先定义序列化,然后再讨论它为什么如此有用

序列化只是将现有对象转换为字节数组。此字节数组表示对象的类、对象的版本和对象的内部状态。然后,可以在运行相同代码的JVM之间使用该字节数组来传输/读取对象

我们为什么要这样做

有几个原因:

  • 通信:如果您有两台运行相同代码的机器,并且它们需要通信,一种简单的方法是一台机器使用它想要传输的信息构建一个对象,然后将该对象序列化到另一台机器。这不是最好的沟通方式,但它能完成工作

  • 持久性:如果要在数据库中存储特定操作的状态,可以轻松地将其序列化为字节数组,并存储在数据库中供以后检索

  • 深度复制:如果您需要对象的精确副本,并且不想麻烦地编写自己的专用clone()类,只需将对象序列化为字节数组,然后将其反序列化为另一个对象即可实现此目标

  • 缓存:实际上只是上面提到的一个应用程序,但是有时候一个对象需要10分钟来构建,但是反序列化只需要10秒。因此,与其将这个巨大的对象保存在内存中,不如通过序列化将其缓存到一个文件中,然后在需要时将其读入

  • 跨JVM同步:序列化可以跨运行在不同体系结构上的不同JVM工作

发表评论