2015-06-08 8 views
0

Я имею класс Employee как:копия класса Util не работает

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); 
    } 

} 

Но это исключение для исключения:

Main Thread (Suspended: TypeError: Error #1034: Type Coercion failed: cannot convert [email protected] to objectutil.Employee.)
objectutil::ObjectUtilCopyCheck/button1_clickHandler
objectutil::ObjectUtilCopyCheck/___ObjectUtilCopyCheck_Button1_click

Может ли кто-нибудь определить, что здесь не так? ТИА.

ответ

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)); 

Else вам нужно зарегистрировать этот класс, как (при условии, что com.app.vo.Employee является пакетом класса Employee):

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

Надеется, что это поможет.

Смежные вопросы