我有一个班级员工:
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。
答案 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));
希望这会对你有所帮助。