【问题标题】: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 实例可能会出现问题

      【讨论】:

      • 有什么用? ed 将为空。这不会比错误更有用。
      猜你喜欢
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多