类型强制失败
问题描述:
我有类似:类型强制失败
class A { }
class B extends A { }
然后我想投的A
到B
一个实例:
var a:A = obtainAInstance();
var b:B = B(a);
为了这个,我得到以下错误:
TypeError: Error #1034: Type Coercion failed: cannot convert A to B.
这可能是什么原因造成的?
答
你a
对象是A
实例,但由于A
是父类,而不是B
,它不可能是一个B
实例。因此,你不能执行这样的演员。
如果你的函数返回一个B
例如,你可以投a
回到B
,并获得其所有B
成员,因为对象是实际上是一个B
:
var a:A = obtainBInstance();
var b:B = B(a);
答
尝试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
但是,如果调用属性未定义为0,那么您可能会遇到此类B
实例的问题- A
用于什么? 'ed'将会是空的。这不会比错误更有用。 – BoltClock