换句话说,这个问题可以解读,“编译时变量声明和定义的顺序是什么?”
我暂时不记得具体的例子,但是我知道我在我的类定义中初始化const和静态值时遇到了麻烦,因为这些值的声明是无序的。
我知道我可以在声明静态const成员时实例化对象,如下所示:
public class ConstsWithNewObjects {
public static const DEFINED_NOW_2:Object = {something:"Defined!"};
public static const DEFINED_NOW_3:Object = new CustomObject("Defined!");
}
但是,如果我从另一个静态值或const值访问其中一个成员,我会想象出现竞争条件,如下:
public class ConstsWithOtherConsts {
public static const DEFINED_NOW_1:Object = DEFINED_NOW_3; // Does this exist, yet?
}
答案 0 :(得分:1)
ActoinScript Hero Jack Dunstan在他的博客上详细介绍了这个确切的主题:Class Bootup Part 2。
无论杰克的发现如何;为了读者的理智,我会建议你;保持静态初始化代码尽可能干净简单 - 不要忘记静态字段可以调用静态方法;你也可以使用static Class initialiser method。