2011-10-30 53 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

相關問題