【问题标题】:Type coercion failed类型强制失败
【发布时间】:2011-12-18 08:02:12
【问题描述】:
我有类似的东西:
class A { }
class B extends A { }
然后我尝试将A 的实例转换为B:
var a:A = obtainAInstance();
var b:B = B(a);
对此,我收到以下错误:
TypeError:错误 #1034:类型强制失败:无法将 A 转换为 B。
这可能是什么原因?
【问题讨论】:
标签:
actionscript-3
actionscript
【解决方案1】:
您的a 对象是A 实例,但由于A 是父类而不是B,它不能是B 实例。因此,你不能执行这样的演员表。
如果您的函数返回B 实例,您可以将a 转换回B,并访问其所有B 成员,因为该对象实际上是B:
var a:A = obtainBInstance();
var b:B = B(a);
【解决方案2】:
试试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
但是,如果调用属性未定义其 super - A,则此类 B 实例可能会出现问题