我一直在搜索和阅读有关对象序列化和相关主题的信息。但是我想不出任何用例。
或者必须使用它的动机或情况是什么?
追问:如果序列化是为了保存对象的状态,为什么Java的对象序列化是必须的?不能将对象的配置保存在文本文件中并通过网络发送吗?
我一直在搜索和阅读有关对象序列化和相关主题的信息。但是我想不出任何用例。
或者必须使用它的动机或情况是什么?
追问:如果序列化是为了保存对象的状态,为什么Java的对象序列化是必须的?不能将对象的配置保存在文本文件中并通过网络发送吗?
序列化非常强大并且有多种用途,除了其他用户已经提到的:
有时你想深拷贝一个对象,一个不陷入反射噩梦的简单方法是序列化它:你如何在 .NET(特别是 C#)中做一个对象的深拷贝?
另一个可能是数据验证。通常,当您计划通过网络传输对象时,您会创建一个定义消息结构的 XML 模式,然后从该模式生成类,这些类将变成您可以传输的对象。在发送您想要序列化的对象之前,例如发送到 XML,以保留对象状态,然后发送该数据流并在另一端根据模式验证您传入的 XML 消息,以确保它符合您的预定义结构,然后反序列化为对象以执行所需的任何面向对象的操作。
有时您需要存储对象的状态。这篇文章很好地涵盖了这个主题。引用文章中关于序列化原因的文章:
序列化提供:
- 一种持久化对象的方法,例如将它们的属性写入磁盘上的文件,或将它们保存到数据库。
- 远程过程调用的一种方法,例如 SOAP 中的方法。
- 一种分发对象的方法,尤其是在 COM、CORBA 等软件组件中。
- 一种检测时变数据变化的方法。
检查 MSDN:http: //msdn.microsoft.com/en-us/library/vstudio/ms233843.aspx
序列化允许开发人员保存对象的状态并根据需要重新创建它,提供对象的存储以及数据交换。通过序列化,开发人员可以执行以下操作,例如通过 Web 服务将对象发送到远程应用程序、将对象从一个域传递到另一个域、将对象作为 XML 字符串通过防火墙传递,或者维护安全性或用户特定跨应用程序的信息。