关于JAVA、C#等中的序列化

本文关键字:序列化 JAVA 关于 | 更新日期: 2023-09-27 18:26:43

我一直在通读我能找到的所有内容,以了解序列化是什么。人们经常说我们需要序列化,这样我们就可以将内存中的对象转换为易于通过网络传输并在磁盘上持久存在的形式。

我的问题是,内存中对象的结构出了什么问题,使其难以传输或存储?

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

请提供一些技术细节。

编辑1:

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

关于JAVA、C#等中的序列化

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

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

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

例如,如果您有一个类的对象

 public class myClass {
   private String myString = null;
   // getters and setters
 }

内存中的表示将只是指向另一个对象(String)的指针。您不能仅仅通过存储二进制形式来调用对象的原始状态。