2011-10-30 141 views
0

我有类似:类型强制失败

class A { } 
class B extends A { } 

然后我想投的AB一个实例:

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

为了这个,我得到以下错误:

TypeError: Error #1034: Type Coercion failed: cannot convert A to B.

这可能是什么原因造成的?

回答

3

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

如果你的函数返回一个B例如,你可以投a回到B,并获得其所有B成员,因为对象是实际上是一个B

var a:A = obtainBInstance(); 
var b:B = B(a); 
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 

但是,如果调用属性未定义为0,那么您可能会遇到此类B实例的问题- A

+0

用于什么? 'ed'将会是空的。这不会比错误更有用。 – BoltClock

相关问题