util类的copy方法不起作用

时间:2015-06-08 07:04:54

标签: actionscript-3 flex actionscript

我有一个班级员工:

public class Employee
{
    public var name:String;
    public function Employee(name:String)
    {
        this.name = name;
    }
}

现在,我正尝试使用ArrayCollection创建ObjectUtil个员工的副本:

protected function button1_clickHandler(event:MouseEvent):void
{
    var newEmployees = ObjectUtil.copy(employees);
    for each(var emp:Employee in newEmployees) {
        Alert.show(emp.name);
    }

}

但它抛出异常:

  

主线程(已暂停:TypeError:错误#1034:类型强制失败:   无法将Object @ ef41a19转换为objectutil.Employee。)
    objectutil :: ObjectUtilCopyCheck / button1_clickHandler
    objectutil :: ObjectUtilCopyCheck / ___ ObjectUtilCopyCheck_Button1_click

任何人都能确定这里有什么问题吗? TIA。

1 个答案:

答案 0 :(得分:0)

方法copy在内部使用本机序列化技术进行复制:

public static function copy(value:Object):Object
{
    var buffer:ByteArray = new ByteArray();
    buffer.writeObject(value);
    buffer.position = 0;
    var result:Object = buffer.readObject();
    return result;
}

如果我们使用远程标记,那么很容易。例如:

//assume employee has [RemoteClass] metadata. 
var newEmployees = Employee (ObjectUtil.copy(emp));

否则你需要注册这个类(假设com.app.vo.Employee是Employee类的包):

registerClassAlias("com.app.vo.Employee",Employee);
//Now we can copy and caste
var newEmployees = Employee (ObjectUtil.copy(emp));

希望这会对你有所帮助。