ArrayCollection浅复制没什么好说的。
深层复制一般网上的方法是通过ObjectUtils的clone或者copy方法(用byteArray实现)
但这里有一个问题,当ac里面放的不是动态类而是密封类时,数据虽然复制了,但类型信息丢失了。
实现方法:通过flash.net.registerClassAlias()方法向Flash Player注册类型信息。
此方法注册该类,以便该类的实例对象都可以从二进制反序列化回原对象。
以下为示例代码
深层复制一般网上的方法是通过ObjectUtils的clone或者copy方法(用byteArray实现)
newAC = ObjectUtils.clone(oldAC) as ArrayCollection但这里有一个问题,当ac里面放的不是动态类而是密封类时,数据虽然复制了,但类型信息丢失了。
实现方法:通过flash.net.registerClassAlias()方法向Flash Player注册类型信息。
此方法注册该类,以便该类的实例对象都可以从二进制反序列化回原对象。
以下为示例代码
public static function copy(source:ArrayCollection):ArrayCollection{
if(source == null)
return null;
if(source.length == 0)
return new ArrayCollection();
var item:Object = source.getItemAt(0);
var className:String = getQualifiedClassName(item);
registerClassAlias(className, getDefinitionByName(className) as Class);
return ObjectUtil.copy(source) as ArrayCollection;
}
本文介绍了一种解决ArrayCollection深层复制中类型信息丢失问题的方法。通过使用registerClassAlias注册类型信息,确保复制过程中不仅数据被正确复制,而且对象类型也能保持一致。此方法适用于包含动态或密封类的对象集合。
4279

被折叠的 条评论
为什么被折叠?



