0

AS3の静的ブロックについて簡単な質問がありました。

アプリケーションロジックを実行する前に静的に初期化する必要があるライブラリがあります。次のような静的コードブロックを挿入した場合、これは本当に何よりも先に実行されますか?(つまり、アプリケーションが起動する前にすべてがセットアップされると想定しても安全ですか?)

package {

    import com.tkassembled.library.MyStaticLibrary;
    import com.tkassembled.library.MyWorker;

    import flash.display.Sprite;

    public class Application extends Sprite {

        // begin static code 
        /* initialize */ {
            MyStaticLibrary.worker = new MyWorker();
        }

        public function Application() {

        }
    }
}

上記のコードは次のように実行されると思います。

  1. Application'メイン実行可能ファイル'であるため、クラスをロードします。
  2. ロードMyStaticLibraryしてMyWorker、静的ブロックを実行します。
  3. 内の静的ブロックを実行しますApplication
  4. コンストラクターを呼び出して、作業を開始します。

これが本当かどうか誰かが知っていますか?それまでの間、すべてをテストするためのアプリケーションを作成すると思います:)

4

1 に答える 1

1

宿題をしました、これが実行順序です:

[16] Application static block executed.
[16] MyLibrary static blocks invoked. 
[16] MyWorker static blocks
[16] MyWorker constructor called. 
[16] MyLibrary.worker set.
[17] Application constructor executed.

それは物事がどのように機能するかを理解するのに本当に役立ちます:)

ここで私の実験ファイルを入手できます:http://bit.ly/aKwqp6

于 2010-11-16T23:10:52.447 に答える