0

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

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

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

4

3 回答 3

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

于 2012-05-11T11:57:57.887 回答
0

第一次使用该类Example

于 2012-05-11T11:40:16.213 回答
0

它会在启动时。但是应该有这个类的“链接”。

  • 在代码中的某处直接使用此类
  • 你有imports这门课

所以如果这个类被编译进来,它会在启动时被实例化。

如我错了请纠正我。

实际上它很容易测试:)

于 2012-05-11T11:46:52.643 回答