静态变量寿命

时间:2012-05-11 11:38:16

标签: actionscript-3 compilation

假设我在类中有一个静态变量:

class Example {
    public static var one:One = new One;
}

我的程序启动(即使我从未使用过它),或者只是在我第一次使用它时,'one'会被实例化吗?

3 个答案:

答案 0 :(得分:1)

我想如果你问这个问题,那是因为你只想在使用它时创建对象。在这种情况下,您应该做的是实现对象的延迟创建。这样的东西会起作用:

class Example {

    private static var one_:One = null;

    public static function get one():One {
        if (!one_) one_ = new One();
        return one_;
    }

    // If the variable is not read-only, you also need a setter:
    public static function set one(v:One):void {
        one_ = v;
    }

}

现在,您确定只有在代码中使用one直接引用Example.one时才会创建{{1}}。

答案 1 :(得分:0)

您第一次使用班级Example

答案 2 :(得分:0)

它在启动时。但是这个班级应该有“链接”。

  • 在代码
  • 的某处直接使用此类
  • 您拥有此课程的imports

因此,如果这个类被编译,它会在启动时实例化。

如果我错了,请纠正我。

实际上测试真的很容易:)