类型强制失败

时间:2011-10-30 19:26:42

标签: actionscript-3 actionscript

我有类似的东西:

class A { }
class B extends A { }

然后我正在尝试将A的实例转换为B

var a:A = obtainAInstance();
var b:B = B(a);

对此,我收到以下错误:

  

TypeError:错误#1034:类型强制失败:无法将A转换为B.

原因是什么?

2 个答案:

答案 0 :(得分:3)

您的a对象是A个实例,但由于A是父类而不是B,因此它不能是B实例。因此,你不能进行这样的演员表。

如果您的函数返回B实例,则可以将a强制转换回B,并访问其所有B个成员,因为该对象实际上是B

var a:A = obtainBInstance();
var b:B = B(a);

答案 1 :(得分:0)

尝试var b:B = a as B;

        var o:Object = new Object();
        var ed:EventDispatcher = o as EventDispatcher;//this works
        //var ed:EventDispatcher = EventDispatcher(o); //this causes an error

但是,如果调用的属性未定义为B - super

,则此类A实例可能会出现问题