var leaderboardRowVOs:Vector.<LeaderboardRowVO> = new Vector.<LeaderboardRowVO>();
作为对象转到系统的另一部分,我正在尝试将其转换回实际类型
notification.getBody() as Vector.<LeaderboardRowVO> //throwing error
var leaderboardRowVOs:Vector.<LeaderboardRowVO> = new Vector.<LeaderboardRowVO>();
作为对象转到系统的另一部分,我正在尝试将其转换回实际类型
notification.getBody() as Vector.<LeaderboardRowVO> //throwing error
在 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。可以通过将适当类型的ArrayVector()
传递给函数来以这种方式实例化 Vector 。
类中的 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"
所以你的问题一定出在其他地方。