我有类似的东西:
class A { }
class B extends A { }
然后我正在尝试将A
的实例转换为B
:
var a:A = obtainAInstance();
var b:B = B(a);
对此,我收到以下错误:
TypeError:错误#1034:类型强制失败:无法将A转换为B.
原因是什么?
答案 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
实例可能会出现问题