我知道序列化是一种将对象转换为字节码的方法,但这种机制的目的是什么?它可以用来举例来保存游戏状态吗? (通过序列化地图,玩家等对象)
答案 0 :(得分:3)
以下是4个理由。
如果您有两台运行相同代码的计算机,并且需要进行通信,则一台计算机可以轻松地构建一个包含其想要传输的信息的对象,然后将该对象序列化为另一台机器。这不是最好的沟通方式,但它可以完成工作。
如果要将特定操作的状态存储在数据库中,可以将其轻松序列化为字节数组,并存储在数据库中以供日后检索。
如果您需要Object的精确副本,并且不想编写自己的专用clone()类,只需将对象序列化为字节数组,然后反序列化它到另一个目标实现了这个目标。
真的只是上面的一个应用程序,但有时一个对象需要10分钟才能构建,但是只需要10秒钟来反序列化。因此,不要抓住内存中的巨大对象,而是通过序列化将其缓存到文件中,并在以后需要时将其读取。
答案 1 :(得分:3)
在计算机科学中,在数据存储和传输的背景下, 序列化是转换数据结构或对象的过程 将状态转换为可以存储的格式(例如,在文件或文件中) 内存缓冲区,或通过网络连接链路传输)和 稍后在相同或另一个计算机环境中“复活”。
序列化的输出格式并不总是字节数组,它可以是XML,JSON,简单文本或任何其他可以完全或部分描述给定对象状态的格式。
这个过程的应用是无数的。
基本上,序列化用于存储需要稍后检索的状态的单个数据对象。
答案 2 :(得分:2)
这样可以保持或运输物品。
http://msdn.microsoft.com/en-us/library/7ay27kt9(v=vs.71).aspx
序列化是将对象的状态转换为的过程 可以 保留或传输 的表单。补充的 序列化是反序列化,它将流转换为 宾语。这些过程共同使数据易于存储和存储 传送。
答案 3 :(得分:2)
您经常需要序列化对象,也就是说在稍后补充的表单中“保存”,或者通过网络传输它们。这可能是用户的偏好,应用程序的状态,文档,发送到服务的命令等......
您在此处有链接:http://msdn.microsoft.com/fr-fr/library/7ay27kt9.aspx
答案 4 :(得分:2)
它本质上允许您保存任何对象的状态,以便相同的实例(对象)可以“恢复生机”。 I.E.保存所有实例变量。所以,是的,用它来保存玩家,他的统计数据,库存等等都是使用序列化的很好的例子。
但请记住,序列化对象时,序列化对象引用的所有对象也会被序列化。并且任何这些引用对象引用的所有其他对象也被序列化。等等等等。因此,为了使序列化无故障地工作,任何可能与序列化对象相关联的潜在对象也必须是可序列化的。
另请注意,不保存静态变量。此外,您不希望保存的实例变量可以标记为 transient 。