flex 中 ArrayCollection的深层复制

ArrayCollection浅复制没什么好说的。
深层复制一般网上的方法是通过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;
}

你可能感兴趣的:(copy,clone,arrayCollection,深层复制)