var leaderboardRowVOs:Vector.<LeaderboardRowVO> = new Vector.<LeaderboardRowVO>();
作为Object进入系统的另一部分,我试图将其转换回实际类型
notification.getBody() as Vector.<LeaderboardRowVO> //throwing error
答案 0 :(得分:1)
AS3中有两种类型转换方法:
// Casting
// 1: returns null if types are not compatible,
// returns reference otherwise
notification.getBody() as Vector.<LeaderboardRowVO>
// Converting
// 2: throws exception if types are not compatible,
// returns reference otherwise
Vector.<LeaderboardRowVO>(notification.getBody())
案例1不会抛出错误,如果您有这样的行为,notification.getBody()
方法中必定存在错误。
编辑: @divillysausages就案例2实际创建另一种类型的对象做了一个聪明的评论。这不是这种情况。这是本机类型的主要发生,但有一个例外:Array类。一些本机类具有顶级转换功能。有关它们的完整列表,请参阅adobe livedocs。通过将适当类型的 Array 传递给Vector()
函数,可以通过这种方式实例化Vector。
答案 1 :(得分:0)
您的类中的Vector必须发生其他事情,因为将矢量转换为Object然后再转换为Vector是有效的。这个简单的测试显示了它:
var v:Vector.<int> = new Vector.<int>();
v.push(1);
v.push(2);
var o:Object = v as Object;
var v2:Vector.<int> = o as Vector.<int>;
trace(v2[0]); // Output "1"
trace(v2[1]); // Output "2"
所以你的问题必须在其他地方。