AS3 TypeError:错误#1007:尝试对非实例化
出于某种原因,我无法得到这个工作(严重简化的代码失败):
package com.domain {
public class SomeClass {
private static var helper:Helper = new Helper();
}
}
class Helper {
}
它编译,但首次访问SomeClass
抛出:
TypeError: Error #1007: Instantiation attempted on a non-constructor.
at com.domain::SomeClass$cinit()
...
+1给达伦。 另一种选择是将Helper
类移动到文件的顶部
class Helper {
}
package com.domain {
public class SomeClass {
private static var helper:Helper = new Helper();
}
}
非构造函数错误是编译器说'你已经为一个我尚未见过的类调用过构造函数'的尴尬方式; 如果它有点聪明,它可以在抱怨...... mehhh之前检查内部类的文件(编译单元)
看到你给你的静态变量private
访问,显然你打算只在内部使用的实例SomeClass
(假设;可以传递出一个返回值)。
下面的解决方案将静态var的创建推迟到内部类被初始化的时候,也就是说当调用Helper.cinit()
,而不是在Helper
不存在时调用SomeClass.cinit()
:
package com.domain {
public class SomeClass {
public function doSomething(param:*):void {
// ... use Helper.INSTANCE
}
}
}
class Helper {
public static const INSTANCE:Helper = new Helper();
}
我认为它不能与Helper和SomeClass在同一个文件中一起工作。 当初始化SomeClass时,Helper类尚未初始化,因此无法创建Helper对象。
将助手移到单独的文件应该可以解决问题。
链接地址: http://www.djcxy.com/p/60603.html上一篇: AS3 TypeError: Error #1007: Instantiation attempted on a non