`

对象的深度拷贝(转)

阅读更多

原:http://www.e-snowlife.com/?p=272
对象的深度拷贝方法,在应用中经常需要传递一个对象参数,传递过去的对象的修改又不希望对原对象产生影响,用该对象方法可以轻松实现了

代码:

package {
import flash.utils.ByteArray;
import flash.utils.getQualifiedClassName;
import flash.utils.getDefinitionByName;
import flash.net.registerClassAlias;

public class CopyUtil{
public static function clone(object:Object):Object{
var qClassName:String = getQualifiedClassName(object);
var objectType:Class = getDefinitionByName(qClassName) as Class;
registerClassAlias(qClassName, objectType);
var copier : ByteArray = new ByteArray();
copier.writeObject(object);
copier.position = 0;
return copier.readObject();
}
}
}

 

使用方法:

代码:

var instanceA : ClassA = new ClassA(); 
var instanceCopy : ClassA = CopyUtil.clone(instanceA ) as ClassA; 
trace(instanceCopy == instanceA)//fale; 
trace(instanceCopy is ClassA) // true; 
trace(instanceCopy is superClass) //true; 

 

 

分享到:
评论

相关推荐

    浅谈C#中List<T>对象的深度拷贝问题

    深度拷贝是指创建一个新对象,不仅复制原始对象的属性,还复制了嵌套对象的引用,确保新旧对象之间的独立性。本文将探讨C#中List对象的深度拷贝问题。 首先,我们来看当List中的T是值类型,如int、double等时的情况...

    java反射机制创建对象实现:java 深度拷贝 -超完美

    深度拷贝是指创建一个与原对象完全独立的新对象,包括所有嵌套对象的副本。以下将详细解释如何通过反射和序列化来实现这一目标。 首先,我们需要确保待拷贝的对象是可序列化的,因为Java的序列化机制可以用来实现...

    怎么使用javascript深度拷贝一个数组

    2. 使用Lodash库的`_.cloneDeep`方法:Lodash是一个广泛使用的JavaScript实用工具库,提供了许多便捷的工具函数,其中`_.cloneDeep`能够实现数组和对象的深度拷贝,包括循环引用的情况,是处理复杂数据结构拷贝的...

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

    - **Dozer库**:允许使用注解来定义复制规则,支持深度复制和类型转换,可以实现不同对象间的复制。 - **ModelMapper库**:提供了`ModelMapper`类,可以通过配置注解自动映射对象,简化了复制过程。 4. **集合与...

    java对象复制克隆

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

    javaEE的对象拷贝工具dozer

    Java EE对象拷贝工具Dozer是一款强大的数据映射库,它简化了在Java对象之间进行深度复制的过程。在软件开发中,特别是在业务层处理数据时,我们经常需要将一个对象的属性值复制到另一个对象中,Dozer提供了一个优雅...

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

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

    深度探索C++对象模型(清晰版.新).rar

    《深度探索C++对象模型》是一本专注于C++底层机制的权威著作,旨在帮助开发者深入理解C++的对象模型,从而更好地运用和优化代码。这本书详细阐述了C++语言中的类、对象、继承、多态等核心概念在内存中的实际表现形式...

    深度探索C++对象模型 超清版

    第1章 关于对象(Object Lessons) 加上封装后的布局成本(Layout Costs for Adding Encapsulation) 1.1 C++模式模式(The C++ Object Model) 简单对象模型(A Simple Object Model) 表格驱动对象模型(A Table-...

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

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

    VC下CArchive串行化对象实例

    `CArchive`类是MFC提供的一种机制,用于实现对象的串行化。在这个实例中,我们将探讨如何在对话框程序中使用`CArchive`进行对象串行化操作。 首先,串行化是将复杂的数据结构或对象转换为可存储或传输的格式,如...

    《深度探索C++对象模型》(Stanley B·Lippman[美] 著,侯捷 译)

    本书重点:探索“对象导向程序所支持的C++对象模型”下的程序行为。对于“对象导向性质之基础实现技术”以及“各种性质背后的隐含利益交换”提供一个清楚的认识。检验由程序变形所带来的效率冲击。提供丰富的程序...

    深度探索c++对象模型

    《深度探索C++对象模型》是一本专注于C++编程语言底层机制的专业书籍,它深入剖析了C++的对象模型,帮助开发者理解C++是如何在内存中表示类和对象的,以及对象之间的关系如何被编译器处理。这本书的核心知识点涵盖了...

    深度探索C++对象模型

    《深度探索C++对象模型》是一本专门为C++开发者精心编写的高级教程,旨在帮助读者深入理解C++语言的核心机制,特别是其对象模型。这本书详细阐述了C++中类、对象、继承、多态等核心概念在底层是如何实现的,为开发者...

    浅谈Java中实现深拷贝的两种方式—clone() & Serialized

    深拷贝可以帮助我们在对象之间保持独立性,并避免了对象之间的耦合关系。在本文中,我们将介绍Java中实现深拷贝的两种方式:clone()和Serialized。 一、使用clone()实现深拷贝 clone()方法是Object类中的一个方法...

    js代码-对象深拷贝

    这种方法可以处理任意复杂的对象结构,但需要注意递归深度限制和循环引用的问题。 3. **第三方库**:有许多JavaScript库如lodash的_.cloneDeep()和jQuery的$.extend(true, {}, obj)提供了深拷贝功能,它们已经处理...

    反射拷贝属性

    这个过程常用于数据迁移、对象克隆或者深度复制场景,特别是当对象层次结构复杂,手动编写复制代码工作量大时。 首先,我们需要获取源对象和目标对象的类类型,这可以通过`Class<?>`的`forName()`或`getClass()`...

    Array和Collection相互转换以及copy深度的小测

    如果数组或集合中的元素是复杂类型(如对象),那么我们是在进行深拷贝还是浅拷贝? - **浅拷贝**:仅复制对象引用,不复制对象本身。如果原始对象的属性被修改,新对象也会受到影响。 - **深拷贝**:创建对象的新...

Global site tag (gtag.js) - Google Analytics