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