利用序列化和反序列化实现深拷贝

Posted lite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用序列化和反序列化实现深拷贝相关的知识,希望对你有一定的参考价值。

以下都是有缺陷的。

 

技术分享图片
 1 private static T BinDeepCopy<T>(T t)  
 2       {  
 3           using(var ms = new MemoryStream()) {  
 4               var bf = new BinaryFormatter();  
 5               bf.Serialize(ms,t);  
 6               ms.Position = 0;  
 7               return (T)bf.Deserialize(ms);  
 8           }  
 9       }  
10   
11       private static T DomDeepCopy<T>(T t)  
12       {  
13           using(var ms = new MemoryStream()) {  
14               XmlSerializer xml = new XmlSerializer(typeof(T));  
15               xml.Serialize(ms,t);  
16               ms.Position = 0;  
17               return (T)xml.Deserialize(ms);  
18           }  
19       }  
20 
21 private static T SoapDeepCopy<T>(T t)  
22 {  
23     using(var ms = new MemoryStream()) {  
24         var soap = new SoapFormatter();  
25         soap.Serialize(ms,t);  
26         ms.Position = 0;  
27         return (T)soap.Deserialize(ms);  
28     }  
29 }  
View Code

 

以上是关于利用序列化和反序列化实现深拷贝的主要内容,如果未能解决你的问题,请参考以下文章

创建型设计模式

克隆_浅拷贝和深拷贝

Spring Boot 深拷贝对象

Java实现深拷贝和浅拷贝

c#:浅克隆和深克隆,序列化和反序列化

Java面试之对象拷贝