0
var leaderboardRowVOs:Vector.<LeaderboardRowVO> = new Vector.<LeaderboardRowVO>();

作为对象转到系统的另一部分,我正在尝试将其转换回实际类型

notification.getBody() as Vector.<LeaderboardRowVO> //throwing error
4

2 回答 2

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。可以通过将适当类型的ArrayVector()传递给函数来以这种方式实例化 Vector 。

于 2012-05-19T10:20:36.223 回答
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"

所以你的问题一定出在其他地方。

于 2012-05-19T10:19:41.923 回答