`

序列化 Serialization

 
阅读更多

利用序列化实现深度克隆

  把对象写到流里的过程是序列化(Serialization)过程;而把对象从流中读出来的过程则叫反序列化(Deserialization)过程。应当指出的是,写到流里的是对象的一个拷贝,而原对象仍然存在于JVM里面。

  在Java语言里深度克隆一个对象,常常可以先使对象实现Serializable接口,然后把对象(实际上只是对象的拷贝)写到一个流里(序列化),再从流里读回来(反序列化),便可以重建对象。

  1. public  Object deepClone() throws IOException, ClassNotFoundException{  
  2.         //将对象写到流里  
  3.         ByteArrayOutputStream bos = new ByteArrayOutputStream();  
  4.         ObjectOutputStream oos = new ObjectOutputStream(bos);  
  5.         oos.writeObject(this);  
  6.         //从流里读回来  
  7.         ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());  
  8.         ObjectInputStream ois = new ObjectInputStream(bis);  
  9.         return ois.readObject();  
  10.     }  
分享到:
评论

相关推荐

    序列化和反序列化 Serialization

    数据的序列化和反序列化 Serialization DeSerialization

    序列化(Serialization)

    序列化(Serialization)是Java系统中处理对象或对象图的过程,通过创建它们的序列化表示形式来创建。序列化的对象值和类型包含足够的信息,以确保可以重新创建出等效类型的对象。反序列化(Deserialization)是从...

    C++11 下使用 Boost.Serialization 库实现智能指针的序列化

    Boost.Serialization库是C++社区广泛使用的序列化工具,它提供了丰富的功能来处理各种类型的对象,包括智能指针。在C++11及更高版本中,智能指针(如`std::unique_ptr`,`std::shared_ptr`和`std::scoped_ptr`)被...

    基于boost的序列化与反序列化

    Boost.Serialization提供了两种主要的序列化方式:文本序列化和二进制序列化。文本序列化通常更易于阅读和调试,但占用的存储空间较大;而二进制序列化则更为紧凑,节省空间,但可能难以直接查看。 1. **文本序列化...

    C#和Java的序列化反序列化

    在C#中,我们可以使用.NET框架提供的`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`类来进行二进制序列化,或者使用`System.Xml.Serialization.XmlSerializer`来进行XML序列化。而在Java中,...

    ASPNET中JSON的序列化和反序列化的方法

    在***中处理JSON的序列化和反序列化是Web开发中常见的需求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,由于其简洁性和易于阅读性,被广泛用于服务器与客户端之间的数据传输。下面将详细介绍**...

    java 对象的序列化与反序列化

    在Java中,序列化(Serialization)是指将一个对象转换为字节流的过程,这个字节流可以保存到磁盘上,或者通过网络进行传输。要实现一个对象的序列化,该对象的类必须实现`Serializable`接口。这是一个标记接口,...

    序列化和反序列化的封装类

    在编程领域,序列化和反序列化是两个关键的概念,特别是在数据存储、网络传输和对象持久化等场景中。它们允许我们将对象的状态转换为字节流(序列化),然后在需要的时候将字节流还原为原来的对象(反序列化)。在C#...

    FST:快速Java序列化的替代品

    这时,FST(Fast Serialization Toolkit)作为一个高效且JDK兼容的序列化库,提供了更快的速度和更小的内存占用,成为了Java开发者的一个优秀选择。 FST的主要特点包括: 1. **高性能**:FST通过优化的序列化算法...

    XML序列化与反序列化 实战

    XML序列化与反序列化是.NET框架中处理数据交换的重要技术,它允许我们将对象的状态转换为XML格式的数据,也可以将XML数据恢复为等效的对象。这个实战项目专注于使用C#实现这一过程,使得开发者能够方便地在XML文件和...

    C#对象三种形式的序列化和反序列化

    在C#中,可以使用`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`类实现二进制序列化。在描述中提到,`Student`对象包含了图片,这种情况下二进制序列化可以高效地处理图像数据,因为它是原始...

    akka-kryo-serialization, 基于Kryo的Akka序列化.zip

    akka-kryo-serialization, 基于Kryo的Akka序列化 akka-kryo-serialization-- Scala 和Akka基于kryo的序列化程序这个库为 Scala 和Akka提供定制的基于kryo的序列化程序。 它可以用于更高效的akka远程处理。它还可以...

    kotlinx.serialization,Kotlin跨平台/多格式序列化.zip

    Kotlinx.Serialization是一个强大的开源库,专门为Kotlin编程语言提供了跨平台的序列化解决方案。这个库允许开发者将数据对象转换成字节流或JSON等不同格式,反之亦然,这对于数据交换、存储和网络通信至关重要。它...

    C#对象序列化反序列化保存与读取和对象直接保存与读取

    C#中的`System.Runtime.Serialization`命名空间提供了多种序列化工具,如`DataContractSerializer`、`XmlSerializer`和`JsonSerializer`等。 - `DataContractSerializer`:主要用于WCF服务,提供高效的序列化,并...

    C#序列化与反序列化(包括复杂xml对象)

    在C#中,我们可以使用`System.Xml.Serialization`命名空间下的`XmlSerializer`类来实现XML序列化。这个过程可以将一个复杂的对象结构转换成XML字符串,方便存储或在网络上传输。 方法一:反序列化取节点KV值 这种...

    四种反序列化与序列化

    - **DataContractSerializer序列化**:`System.Runtime.Serialization.DataContractSerializer` 是专为WCF(Windows Communication Foundation)设计的序列化器,它支持XML,但比 `XmlSerializer` 更加高效。...

    java序列化和反序列化

    Java序列化(Serialization)是一项重要的功能,它可以将对象的状态转化为一系列字节,从而实现对象的持久化存储或在网络上传输。序列化机制使得Java对象能够在不同的平台之间进行传输,并且能够保持其原始状态。 *...

    C#对象序列化与反序列化

    ### C#对象序列化与反序列化 #### 1. 对象序列化的介绍 ##### (1).NET支持对象序列化的几种方式 .NET框架提供了多种序列化机制,它们各自有不同的应用场景和特点。 - **二进制序列化**: - **定义**:二进制...

    关于XML、JSON的序列化、发序列化对象或集合

    在上面的代码中,我们使用了`System.Xml.Serialization.XmlSerializer`类来实现XML序列化。该类提供了将对象序列化为XML的方法。我们可以使用该类的`Serialize`方法将对象序列化为XML,然后将其写入到流中。 例如,...

Global site tag (gtag.js) - Google Analytics