2010-11-16 4 views
0

У меня был быстрый вопрос о статических блоках в AS3.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. Вызовите конструктора и получите все.

Кто-нибудь знает, верно это или нет? Я думаю, я буду строить приложение, чтобы проверить все это в то же время :)

ответ

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

Смежные вопросы