关于JAVA,C#等的序列化

时间:2013-08-06 08:47:14

标签: c# java serialization

我一直在阅读我能找到的所有知道序列化的内容。人们经常说我们需要序列化,以便我们可以将内存中的对象转换为易于通过网络传输并保留在磁盘上的形式。

我的问题是 - 内存对象的结构有什么问题,难以运输或存储?

有些人还说对象是二进制形式,需要序列化。 AFAIK,计算机存储或内存中的所有内容都是二进制的。他们想传达的是什么?

一些技术细节将不胜感激。

编辑1:

我一直在研究C#代码示例,但所有代码都使用框架中提供的"序列化" 。也许我需要使用C ++来查看细节并体验痛苦。

2 个答案:

答案 0 :(得分:1)

一个简单而明显的例子; file对象是对文件系统中文件的引用,但本身并不是很有用。序列化它最多会将文件名传递给接收者,接收者可能没有文件系统来读取文件。

相反,当您通过网络传递它时,您可以将其序列化为包含文件的内容,该文件可由接收方使用。

序列化基本上只是取一个在内存中可能没有非常有用的内容的对象(指向/存储在别处的数据的引用/ ...),并将其转换为接收器实际可用的内容。

答案 1 :(得分:1)

例如,如果你有这个类的对象

 public class myClass {
   private String myString = null;

   // getters and setters
 }

内存表示将只是指向另一个对象(String)的指针。仅通过存储二进制形式,您无法回想起对象的原始状态。