2
从ByteArray
反序列化时,我发现了一个奇怪的错误,其中Vector
s不能包含扩展的类型Array
:它们在反序列化时存在TypeError。数组子类无法反序列化,错误#1034
TypeError: Error #1034: Type Coercion failed: cannot convert []@4b8c42e1 to com.myapp.ArraySubclass.
at flash.utils::ByteArray/readObject()
at com.myapp::MyApplication()[/Users/aaaidan/MyApp/com/myapp/MyApplication.as:99]
下面的方式:它
public class Application extends Sprite {
public function Application() {
// register the custom class
registerClassAlias("MyArraySubclass", MyArraySubclass);
// write a vector containing an array subclass to a byte array
var vec:Vector.<MyArraySubclass> = new Vector.<MyArraySubclass>();
var arraySubclass:MyArraySubclass = new MyArraySubclass();
arraySubclass.customProperty = "foo";
vec.push(arraySubclass);
var ba:ByteArray = new ByteArray();
ba.writeObject(arraySubclass);
ba.position = 0;
// read it back
var arraySubclass2:MyArraySubclass = ba.readObject() as MyArraySubclass; // throws TypeError
}
}
public class MyArraySubclass extends Array {
public var customProperty:String = "default";
}
是一个非常特殊的情况下,但它似乎很奇怪我。任何人有任何想法是什么导致它,或如何解决它?
嘿,谢谢你的回答。当你说代码没有抛出错误时,我想指出它会抛出ByteArray的readObject方法中的错误,而不仅仅是来自Application类。所以这不是我在那里抛出的那个投掷错误,这是反序列化......你知道我的意思吗? – aaaidan 2010-03-29 23:58:25
这真的很奇怪,因为它会反序列化,只要它没有在Vector中序列化。我会提出一个错误,现在你提到它......感谢支持。 – aaaidan 2010-03-30 00:07:18