这段代码是blunderous的,因为它向一个数组中添加了一个类,然后试图将它拉出来并操作它,就好像它是一个对象一样。为什么Flex让我把一个类当作一个对象
private function fail(event:Event):void
{
var myObj:MyClass;
var a:ArrayCollection = new ArrayCollection();
var x:MyClass;
var y:MyClass;
myObj = new MyClass;
a.addItem(myObj);
a.addItem(MyClass); // !!BAD!!
x = a[0];
y = a[1];
}
当我意外地做了这件事,我花了我一辈子才看到我做错了什么。部分原因是错误信息没有告诉我任何我能理解的东西:
TypeError: Error #1034: Type Coercion failed: cannot convert com.ibm.ITest::MyClass$ to com.ibm.ITest.MyClass.
at ITest/fail()[C:\work_simple01\ITest\src\ITest.mxml:51]
at ITest/___ITest_Button5_click()[C:\work_simple01\ITest\src\ITest.mxml:61]
所以我的问题是,为什么这行标记!!坏!以上甚至允许?我期望在这里编译时错误。自编译以来,我一定不知道这个用法。它是什么?