如何进行object以及Array(数组)的深复制
问题:
? ? ? ? ? ? ? ? 深复制是克隆一个数组或者object很有效的方法,深复制以后的对象中的新元素只是原始数据元素的备份,并无内在联系。两个对象的状态是完全一致的,但是元素存放的是不同的引用,指向不同的对象。
? ? ? ? 解决方案:
? ? ? ? ? ? ? ? 把你想要深复制的的数组或者object写进字节数组中,然后重置position的位置(把position置为0),最后重新从字节数组中读取出来。
? ? ? ? 详细解释:
? ? ? ? ? ? ? ? 这里是一个简单的工具类,封装了一个通过深复制实现的clone方法:
- package
- {
- ? ? ? ? import flash.utils.ByteArray;
- ? ? ? ? public class DeepCopyUtil
- ? ? ? ? {
- ? ? ? ? ? ? ? ? public static function clone (source : Object) : *
- ? ? ? ? ? ? ? ? {
- ? ? ? ? ? ? ? ? ? ? ? ? var array : ByteArray = new ByteArray ();
- ? ? ? ? ? ? ? ? ? ? ? ? array.writeObject (source);
- ? ? ? ? ? ? ? ? ? ? ? ? array.position = 0;
- ? ? ? ? ? ? ? ? ? ? ? ??
- ? ? ? ? ? ? ? ? ? ? ? ? return array.readObject ();
- ? ? ? ? ? ? ? ? }
- ? ? ? ? }
- }