`
g4_gc
  • 浏览: 64299 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

利用序列化实现java对象的深度复制

    博客分类:
  • java
阅读更多
package com.cs.common.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;


/**
 * @author 
 * @version 1.0
 */
public class CloneUtils {
	
	/**
	 * 利用序列化实现java对象的深度复制
	 * 
	 * @param srcObj
	 * @return
	 */
	 public static Object depthClone(Object srcObj) {
	        Object cloneObj = null;
	        try {
	            ByteArrayOutputStream out = new ByteArrayOutputStream();
	            ObjectOutputStream oo = new ObjectOutputStream(out);
	            oo.writeObject(srcObj);

	            ByteArrayInputStream in = new ByteArrayInputStream(out
	                    .toByteArray());
	            ObjectInputStream oi = new ObjectInputStream(in);
	            cloneObj = oi.readObject();
	        } catch (IOException e) {
	            e.printStackTrace();
	        } catch (ClassNotFoundException e) {
	            e.printStackTrace();
	        }
	        return cloneObj;
	    }
	
}

分享到:
评论

相关推荐

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

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

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

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

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

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

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

    1. **实现Serializable接口**:利用序列化和反序列化来实现深拷贝。首先将对象序列化为字节数组,然后再将这个字节数组反序列化为新的对象。这种方法适用于所有实现了Serializable接口的对象,但效率较低,并且如果...

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

    深复制通常需要自定义实现,或者利用序列化和反序列化的方法来完成。例如: ```java public MySerializableClass deepCopy() throws IOException, ClassNotFoundException { ByteArrayOutputStream ...

    java深度克隆

    3. **安全性问题**:使用序列化实现深度克隆可能会存在安全风险,例如反序列化恶意构造的数据可能导致代码执行等安全漏洞。 4. **实现限制**:只有实现了`Serializable`接口的类才能被正确地序列化和反序列化。 ###...

    Java深度复制功能与用法实例分析

    在Java编程中,深度复制是一种创建对象副本的方法,它...实现深度复制可以通过序列化和反序列化,但这要求对象及其所有嵌套对象都是可序列化的。在特定情况下,还可以利用`clone()`方法或其他工具类来实现深度复制。

    clone 深度克隆对象

    实现深度克隆可以采用实现Cloneable接口并重写clone(),或者利用序列化和反序列化技术,具体选择取决于应用场景和性能需求。在实际项目中,应根据具体情况权衡效率和安全性,合理选择克隆策略。

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

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

    数据复制代码JAVA

    对于复杂对象,可以利用Java的序列化机制进行深拷贝。将对象序列化为字节流,然后反序列化得到一个新的独立对象。这种方式适用于那些不支持`Cloneable`接口或`clone()`方法的对象。 9. **数据复制在大数据中的应用...

    OSDT19-Java_objects_网络传输加速.pptx

    总的来说,这个研究关注的是如何利用先进的硬件技术和定制化的序列化策略来优化Java对象在网络传输中的性能,尤其是针对大数据处理和分布式计算环境。通过堆直写和特定的序列化工具,可以显著减少序列化和反序列化...

    深度克隆的事例代码

    在Java中,我们可以利用序列化和反序列化来实现深度克隆。首先,我们需要让我们的类实现`Serializable`接口,然后创建一个`clone()`方法: ```java import java.io.*; class MyObject implements Serializable { ...

    kryo-3.0.3-all.zip

    3. **深度复制**:Kryo不仅支持基本的序列化和反序列化,还能实现对象的深拷贝,这对于数据备份、状态恢复等场景非常有用。 4. **预注册类**:预先注册要序列化的类可以进一步提升性能,因为Kryo在运行时无需动态...

    Gson_UserGuild.zip

    - 深度复制:通过Gson可以实现Java对象的深度克隆。 7. **序列化策略** - `ExclusionStrategies`接口:允许自定义哪些字段应该被包含或忽略在序列化和反序列化过程中。 - `@Expose`注解:标记哪些字段应被序列化...

    java-6个机制.doc

    Java通过实现`Serializable`接口来支持对象序列化。 **2.2 序列化步骤** 1. **实现`Serializable`接口**:类需实现`Serializable`接口,该接口无任何方法,仅作为标记。 2. **序列化对象**:使用`...

    JAVA实验报告四(实现String类).doc

    这通常涉及到序列化和反序列化的过程,或者手动实现`clone()`方法。 #### 3. 课程设计的主要设计思想 - **使用ArrayList实现栈结构**:利用`ArrayList`的灵活性和高效性来构建栈,可以方便地实现入栈、出栈等操作...

    Java反射机制总结(实例分析)

    - **序列化与反序列化**:在对象序列化时,可能需要获取对象的所有字段,反射可以实现这一点。 - **框架开发**:许多框架如Spring、Struts等使用反射来实现依赖注入,动态调用方法。 - **动态代理**:Java的动态代理...

    通过构造及反射实现类属性赋值

    这种方法在处理复杂对象结构或需要解耦代码时特别有用,例如在数据持久化、对象拷贝或者JSON序列化与反序列化等场景。 当然,使用反射会带来性能上的开销,且可能会增加代码的复杂性。因此,在实际开发中,我们通常...

    JsonHelper

    除了基本的序列化和反序列化,JsonHelper还可能提供了其他实用功能,如JSON对象的深度复制、部分字段的解析、JSONPath查询等。这些高级特性在处理复杂JSON数据时能提供很大的便利。 在实际应用中,JsonHelper可以...

Global site tag (gtag.js) - Google Analytics