`
redsky008
  • 浏览: 351835 次
  • 性别: Icon_minigender_1
  • 来自: 成都正在项目
社区版块
存档分类
最新评论

深度克隆对象

阅读更多
必须将对象序列和反序列,
而且尤其在多线程中要引用多个对象,而且多个对象之间有某种关联,
将多个对象融合进一个对象中,便于深度克隆,否则一旦牵扯关联获取某种数据。
就有可能访问不到某对象数据,

比如:序列多个对象中存在Map对象建立的链表,Key值为对象的情况,如果不深度克隆,会造成死循环(一个对象被多个进程引用,注意:并非是锁定了,本质就是死循环)。
而如果这个时候每个对象都进行深度克隆,再加入多线程的run中运算,定会造成一个Map对象访问不到另一个Map对象中的值


    public static final Object deepclone(Object src)   
    {   
        try  
        {   
            ByteArrayOutputStream baos = new ByteArrayOutputStream();   
            ObjectOutputStream out = new ObjectOutputStream(baos);   
            out.writeObject(src);   
            out.close();   
            ByteArrayInputStream bin = new ByteArrayInputStream(baos.toByteArray());   
            ObjectInputStream in = new ObjectInputStream(bin);   
            Object clone = in.readObject();   
            in.close();
            return (clone);   
        }   
        catch (ClassNotFoundException e)   
        {   
            throw new InternalError(e.toString());   
        }   
        catch (StreamCorruptedException e)   
        {   
            throw new InternalError(e.toString());   
        }   
        catch (IOException e)   
        {   
            throw new InternalError(e.toString());   
        }   
    }   
分享到:
评论

相关推荐

    clone 深度克隆对象

    深度克隆,也称为完全克隆,是一种创建新对象的技术,这个新对象不仅包含原始对象的所有属性值,还包含了嵌套对象的完整副本。这意味着如果一个对象中包含了其他对象的引用,深度克隆会创建这些引用对象的独立副本,...

    java克隆对象(两种方法)

    java的两种深度克隆方法,1cloneTest是用Cloneable接口的clone方法实现(对象必须要实现cloneable接口).2cloneSerialize.java是用对象流写对象到byte数组中,然后从byte数组中取得对象.(对象必须要实现serializble接口)

    java深度克隆

    在Java中,深度克隆是一种用于创建对象副本的方法,它可以确保复制出的新对象与原对象之间没有任何引用关系,也就是说,新对象中的所有成员变量(包括引用类型)都是原对象对应成员变量的副本。这种特性使得深度克隆...

    JavaScript对象之深度克隆介绍

    在开发中,深度克隆对象的原因通常是为了保持原始数据的完整性,避免因修改克隆后的对象而导致原始数据的意外变更。例如,当你想要创建一个用户配置对象的副本,以便在不改变用户原始设置的情况下进行操作,或者在...

    深度克隆的事例代码

    深度克隆是编程中一种重要的概念,特别是在处理复杂对象或者数据结构时,它能够创建一个完全独立的副本,这个副本不仅包含原始对象的所有属性,而且其内部引用的对象也会被复制,形成一个新的独立的对象树。...

    java的深度克隆的例子

    3. **反序列化对象**:创建一个`ObjectInputStream`,从`ByteArrayOutputStream`读取对象,得到克隆对象。 ```java ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ...

    gson深度克隆jar包

    Gson深度克隆是一个利用Gson库实现对象深度克隆的工具,主要通过将对象序列化为JSON字符串,再从JSON字符串反序列化为新对象。其核心原理是利用Gson的序列化与反序列化特性,无需手动实现克隆逻辑。 主要特点: ...

    JS对象的深度克隆方法示例

    在JavaScript编程中,对象的...在JavaScript中,深度克隆对象对于维护数据的独立性和防止意外的副作用至关重要,特别是在数据驱动的框架(如Angular)中。了解和掌握这些方法能够帮助开发者更好地处理复杂的数据结构。

    一个用于对象深度克隆的同构和可配置javascript函数

    在JavaScript开发中,深度克隆是一个常见的需求,它主要用于创建对象的一个完全独立的副本,不会因为对原对象的修改而影响到副本。标题提到的"一个用于对象深度克隆的同构和可配置javascript函数"是指一个能够在...

    JS对象深度克隆实例分析

    JavaScript中的对象深度克隆是一种创建新对象的过程,这个新对象完全复制了原始对象的所有属性,包括嵌套的对象和数组,而不会与原始对象共享引用。这意味着对克隆对象的任何修改都不会影响原始对象。在JavaScript中...

    深入JAVA对象深度克隆的详解

    例如,如果你有一个对象A,它包含一个列表或另一个对象B的引用,当使用`clone()`方法时,对象A和其克隆对象之间的引用关系保持不变,也就是说,修改克隆对象中的B,也将影响原始对象中的B。 为了克服这个限制,Java...

    JavaScript浅层克隆与深度克隆示例详解

    JavaScript中的浅层克隆与深度克隆是两种不同的对象复制方式,它们主要处理对象和数组这类引用类型的数据。这两种克隆方法的区别在于处理对象内部引用值的方式,即对堆内存中对象的复制程度。 1. **浅层克隆**: ...

    dotnet-此项目为Natasha的衍生项目为用户提供高性能的深度克隆

    浅克隆只是复制对象的引用,而不是实际的对象内容,因此,如果对象中包含其他对象的引用,这些引用在原始对象和克隆对象之间是共享的。而深度克隆则会递归地复制对象及其所有嵌套对象,确保每个对象都有自己的独立...

    一行代码实现纯数据json对象的深度克隆实现思路

    在JavaScript中,深度克隆指的是创建一个新对象,其内容完全复制自源对象,包括所有嵌套的对象和数组。在处理复杂的数据结构时,深度克隆尤为重要,因为它能确保源对象不受目标对象的修改影响。标题提到的"一行代码...

    java 深度克隆的代码实例实战理解

    可以更好的去理解java克隆的运用,尤其在多线程的运用过程中,多个对象进行操作过程中,可以先进行对 对象进行 备份,首先就克隆一份,当多线程对对象操作过程中,与异常情况,可以对对象进行恢复,克隆还其他的用途,学会...

    nanoclone只有145B实现深度克隆JavaScript对象

    标题提到的"nanoclone"是一个极简的JavaScript库,其核心代码只有145字节,但能实现深度克隆功能。这在追求轻量级解决方案的场景下显得尤为宝贵。 在JavaScript中,有多种实现深拷贝的方法。例如,可以使用JSON的...

    object-clone:克隆对象支持循环引用

    深度克隆对象,支持循环引用和属性描述符 var clone = require ( '@dmail/object-clone' ) ; var a = { name : 'a' } ; var b = clone ( a ) ; b . name ; // 'a' // of course b != a 它克隆得很深 var a = { ...

Global site tag (gtag.js) - Google Analytics