0

クラスに静的変数があるとします。

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

「1」は、プログラムの起動時にインスタンス化されますか (使用しない場合でも)、または初めて使用するときにインスタンス化されますか?

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 に答える