`
nbqwcnm
  • 浏览: 19297 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

序列化深度复制对象

    博客分类:
  • java
阅读更多
// returns a deep copy of an object
	public static <T> T deepCopy(T oldObj) throws Exception {
		ObjectOutputStream oos = null;
		ObjectInputStream ois = null;
		try {
			ByteArrayOutputStream bos = new ByteArrayOutputStream();
			oos = new ObjectOutputStream(bos);
			
			// serialize and pass the object
			oos.writeObject(oldObj);
			oos.flush();
			ByteArrayInputStream bin = new ByteArrayInputStream(bos.toByteArray());
			ois = new ObjectInputStream(bin);
			
			// return the new object
			return (T) ois.readObject();
		} catch (Exception e) {
			throw (e);
		} finally {
			if (oos != null) oos.close();
			if (ois != null) ois.close();
		}
	}

 

分享到:
评论

相关推荐

    浅谈C#中ListT对象的深度拷贝问题

    一、List对象中的T是值类型的情况(int 类型等)...1、对于引用类型的List无法用以上方法进行复制,只会复制List中对象的引用,可以用以下扩展方法复制: static class Extensions { public static IList&lt;T&gt; Clone(t

    用序列化实现ListT 实例的深复制(推荐)

    如果 List&lt;T&gt; 里的 T 是引用类型(如myClass类),则在 像这种写法: List&lt;myClass&gt; lists1 = new List() { new myClass(), ...序列化是指将对象转换为字节流的形式,然后保存在内存或者数据库中

    序列化(Serialization)实现深拷贝.md

    深拷贝:指的是拷贝一个对象时,不仅仅把对象的引用进行复制,还把该对象引用的值也一起拷贝。如果引用类型里面还包含很多引用类型,或者内层引用类型的类里面又包含多层...这时我们可以用序列化来实现对象的深拷贝。

    kotlin-deep-copy-helper:轻松复制和修改不可变的复杂对象树。 通过序列化,具有杰克逊库

    Kotlin深度复制助手 动机 通常,在Kotlin中,我们会尽可能使用不可变的属性和集合。 但是,对于测试方案,我们通常希望对正常测试用例中的数据进行突变,破坏或以某种特定方式进行修改。 Kotlin数据类上的标准.copy...

    omotenashi-js:具有深度复制、stringifyparse csvjson、数字缩写、形成时间序列数据等的轻量级工具

    这个工具不是重新发明轮子,它包含深度复制、字符串化/解析csv/json、数字缩写、形成时间序列数据等。安装使用安装: npm install omotenashi-js当前版本使用节点 v0.10.33 进行测试。测试请参阅 test/*.js 和下面...

    C#复制和深度复制的实现方法

    深度复制与浅表复制的区别在于,浅表复制只复制值类型的值,而对于实例所包含的对象依然指向原有实例。 class Program { [Serializable] public class Car { public string name; public Car(string name) ...

    .NET的深复制方法(以C#语言为例)

    很多时候我们复制一个对象实例A到实例B,在用实例B去做其他事情的时候,会对实例B进行修改,为保证对B的修改不会影响到A的正常使用,就需要使用到深复制。... //测试1:深度复制 自定义类 try { Console.WriteL

    .NET之美:.NET关键技术深入分析

    1.3.2深度复制 1.4不可变类型 1.4.1从类型设计谈起,Class还是Struct 1.4.2数据不一致的问题 1.4.3 常量性和原子性 1.4.4避免外部类型对类型内部的访问 1.5本章小结 第2章C#中的泛型 2.1理解泛型 2.1.1 为...

    浅拷贝和深拷贝深入理解(shallow copy VS deep copy)

    •深拷贝(深度克隆):不仅复制对象的值类型字段,同时也复制原对象中的对象.就是说完全是新对象产生的. 浅拷贝和深拷贝之间的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复

    Think in Java(中文版)chm格式

    12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更大的深度 12.2.10 为什么有这个奇怪的设计 12.3 克隆的控制 12.3.1 副本构建器 12.4 只读类 12.4.1 创建只读类 12.4.2 “一成不变”的弊端 12.4.3 不变...

    Thinking in Java 中文第四版+习题答案

    12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更大的深度 12.2.10 为什么有这个奇怪的设计 12.3 克隆的控制 12.3.1 副本构建器 12.4 只读类 12.4.1 创建只读类 12.4.2 “一成不变”的弊端 12.4.3 不变字串 ...

    JAVA_Thinking in Java

    12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更大的深度 12.2.10 为什么有这个奇怪的设计 12.3 克隆的控制 12.3.1 副本构建器 12.4 只读类 12.4.1 创建只读类 12.4.2 “一成不变”的弊端 12.4.3 不变字串 ...

    Java初学者入门教学

    12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更大的深度 12.2.10 为什么有这个奇怪的设计 12.3 克隆的控制 12.3.1 副本构建器 12.4 只读类 12.4.1 创建只读类 12.4.2 “一成不变”的弊端 12.4.3 不变字串 ...

    ThinkInJava

    12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更大的深度 12.2.10 为什么有这个奇怪的设计 12.3 克隆的控制 12.3.1 副本构建器 12.4 只读类 12.4.1 创建只读类 12.4.2 “一成不变”的弊端 12.4.3 不变字串 ...

    java 编程入门思考

    12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更大的深度 12.2.10 为什么有这个奇怪的设计 12.3 克隆的控制 12.3.1 副本构建器 12.4 只读类 12.4.1 创建只读类 12.4.2 “一成不变”的弊端 12.4.3 不变字串 ...

    thinkinjava

    12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更大的深度 12.2.10 为什么有这个奇怪的设计 12.3 克隆的控制 12.3.1 副本构建器 12.4 只读类 12.4.1 创建只读类 12.4.2 “一成不变”的弊端 12.4.3 不变字串 ...

    Thinking in Java简体中文(全)

    12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更大的深度 12.2.10 为什么有这个奇怪的设计 12.3 克隆的控制 12.3.1 副本构建器 12.4 只读类 12.4.1 创建只读类 12.4.2 “一成不变”的弊端 12.4.3 不变字串 ...

    java联想(中文)

    12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更大的深度 12.2.10 为什么有这个奇怪的设计 12.3 克隆的控制 12.3.1 副本构建器 12.4 只读类 12.4.1 创建只读类 12.4.2 “一成不变”的弊端 12.4.3 不变字串 ...

    节点

    本页介绍Rison ,这是一种针对URI的紧凑性而优化的数据序列化格式。 Rison是JSON的一个细微变化,经过URI编码后,它看起来要优越得多。 Rison仍然表示与JSON完全相同的数据结构集,因此可以来回转换数据而不会造成...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更大的深度 12.2.10 为什么有这个奇怪的设计 12.3 克隆的控制 12.3.1 副本构建器 12.4 只读类 12.4.1 创建只读类 12.4.2 “一成不变”的弊端 12.4.3 不变字串 ...

Global site tag (gtag.js) - Google Analytics