`
nbqwcnm
  • 浏览: 20058 次
  • 性别: 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();
		}
	}

 

分享到:
评论

相关推荐

    将 Java 转换为 JSON 将 JSON 转换为 Java 漂亮打印 JSON Java JSON 序列化器 深度复制 Java 对象图 .zip

    深度复制 Java 对象图。json-io 用于 Java 序列化为 JSON 格式或从 JSON 格式序列化的有用工具。可在Maven Central上获取。此库不依赖于除我们自己的库之外的其他运行时库。java-util. 该json-io.jar文件220K与JDK...

    java List 深度复制方法

    总结来说,Java中实现List的深度复制,可以采用序列化和反序列化的方法,或者手动复制每个元素。选择哪种方法取决于你的具体需求,例如对象是否支持序列化,以及性能和代码复杂性的考量。在处理可变对象时,确保深...

    序列化与持久化相同点跟不同点

    5. **对象克隆:** 可以通过序列化和反序列化实现对象的深度复制。 #### 三、序列化与持久化的相似之处 尽管序列化和持久化在本质上有所区别,但它们之间的相似之处也非常明显: 1. **数据转换:** 无论是序列化...

    c#深度复制浅度复制

    - 使用序列化和反序列化进行深度复制:这是一种常见的实现深度复制的方法,它会创建一个完全独立的新对象。 ```csharp using System.IO; using System.Runtime.Serialization.Formatters.Binary; public MyClass ...

    【IT十八掌徐培成】Java基础第16天-03.串行化-深度复制.zip

    深度复制和浅复制是复制对象的两种方式。浅复制只是复制对象的引用,而深复制则会创建一个新的对象,并复制原对象的所有属性,包括嵌套的对象。对于非基本类型的成员变量,如果进行浅复制,新复制的对象和原对象会...

    clone 深度克隆对象

    "clone"方法就是用于复制对象的一种方式,尤其在Java等支持此功能的语言中。本文将深入探讨"深度克隆"这一概念,以及它与普通克隆的区别,并讨论其在实际应用中的优缺点。 深度克隆,也称为完全克隆,是一种创建新...

    序列化测试-java

    Kryo不依赖于Java的序列化机制,而是有自己的序列化框架,支持深度复制和注册类型。Kryo的优点在于它的效率,但缺点是不完全兼容Java序列化,可能导致与其他使用Java序列化的系统不兼容。 **Fastjson** Fastjson是...

    java 深度拷贝 复制 深度复制.zip

    在实际应用中,我们还可以考虑使用序列化和反序列化的方式实现深度拷贝,或者使用第三方库如Apache Commons Lang的`DeepClone`方法,它们提供了更简便的解决方案。但这里我们重点讨论了如何仅通过Java反射机制来实现...

    Java利用序列化实现对象深度clone的方法

    总的来说,Java序列化提供了一种实现对象深度克隆的方法,适用于需要完整复制对象及其关联对象的情况。然而,这也带来了一些潜在问题,如性能影响、安全风险(因为序列化的对象可能被恶意用户反序列化以执行代码)...

    深入剖析Java序列化:挑战复杂的面试题与详细解析

    - 通过序列化和反序列化实现对象的深度复制,创建与原始对象独立的副本。 9. **外部化**: - 外部化是将对象状态保存到外部存储,实现方式是实现`Externalizable`接口并重写`writeExternal()`和`readExternal()`...

    java不同对象及集合的多次复制

    - **序列化与反序列化**:将对象序列化为字节数组,然后再反序列化为新的对象,实现深拷贝。 3. **注解实现对象复制** - **Apache Commons BeanUtils库**:提供了`BeanUtils.copyProperties()`方法,可以快速实现...

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

    浅复制仅复制对象本身,而不复制其引用的对象,而深复制则会复制对象及其所有引用的对象,确保复制后的新对象与原始对象完全独立。当我们处理包含引用类型的集合,如List时,如果直接通过构造函数或Clone方法创建新...

    MyBatisDemo && JAVA把一个对象的全部属性复制到另一个相同的对象

    这篇博文“MyBatisDemo && JAVA把一个对象的全部属性复制到另一个相同的对象”探讨的是如何在Java编程中实现对象属性的深度复制。MyBatis是一个流行的Java持久层框架,它简化了数据库操作,而对象复制则是处理业务...

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

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

    c# 序列与反序列

    序列化是将对象的状态转换为可存储或可传输的格式的过程,而反序列化则是相反的过程,即从这种格式恢复对象。在本篇中,我们将深入探讨C#中的序列化和反序列化机制,并通过`ThSerializer.cs`这个文件来理解其具体...

    java对象复制克隆

    标签中的“复制java对象”、“深度克隆”和“深度复制实例”强调了我们要关注的是Java中如何实现对象的深拷贝,并提供了实际操作的例子。在编写代码时,应该遵循良好的编程实践,包括适当的命名、注释和错误处理,以...

    Java中对象的序列化方式克隆详解

    Java中的对象序列化是将一个对象转换为字节序列的过程,这一过程允许对象的状态被持久化,例如存储到磁盘或在网络中传输。反序列化则是将字节序列恢复为原来的对象状态。对象序列化是Java提供的一种强大的工具,尤其...

    KryoJava序列化和克隆框架具有快速高效自动的特点

    Kryo是一个针对Java的高性能对象图序列化框架,由Esoteric Software开发,其特性包括快速、高效以及自动处理,使得在内存序列化和反序列化过程中能实现卓越的性能。 **Kryo的核心特性** 1. **速度与效率**:Kryo...

    java深度克隆

    2. **序列化对象**:通过调用`ObjectOutputStream`的`writeObject()`方法将传入的对象序列化,并存储到`ByteArrayOutputStream`中。 3. **创建输入流**:使用`ByteArrayOutputStream`中的字节数组创建`...

Global site tag (gtag.js) - Google Analytics