Еще раз хотелось бы уточнить, правильно ли я понимаю:
Порядок инициализации блоков и переменных:
1. Статические блоки и переменные родителя;
2. Статические блоки и переменные наследника;
3. Нестатические блоки и переменные родителя;
4. Конструктор родителя;
5. Нестатические блоки и переменные наследника;
6. Конструктор наследника.
здесь все понятно, а дальше мои предположения, правильно ли я понимаю?
если сначала в коде идет статический блок, а потом статическая переменная, сразу проинициализированная, то выполняться будет так:
1 - создание статической переменной
2 - статический блок
3 - инициализация статической переменной
Lara
35 уровень
Порядок инициализации блоков и переменных
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
9 ноября 2020, 15:14
1 , 3 , 2, потому что пункт 1 и пункт 3, это всё одна строка.
иначе при таком примере:
программа бы не скомпилировалась.
0
Lara
9 ноября 2020, 16:49
у тебя пример немного другой..... здесь понятно, так как идет переменная, а после статический блок. поэтому
1) создается переменная
2) инициализация переменной
3) статический блок
к моему вопросу больше подходит этот пример, переменная maxCatCount![]()

0
hidden #2322530
9 ноября 2020, 16:54решение
это неправильный пример никто не инициализирует статичную переменную потом. если это конечно не паттерн с lazy (ленивой) инициализацией. не надо всё что написано в статьях воспринимать буквально. там полно ошибок, и никто уже не хочет исправлять.
есть сомнения, иди в гугл.
к тому же в твоем примере, maxCatCount объявляется и инициализируется сразу.
где её объявлять и сразу инициализировать разницы нет. ибо статичные переменные с инициализацией идут в первую очередь. хоть в конце класса напиши.
+2
Lara
9 ноября 2020, 17:14
🤣🤣🤣 я ору! не воспринимай буквально! я как раз наоборот: пытаюсь всю эту инфу понять и принять и запихнуть себе в голову. А тут оказывается еще и фильтровать надо 🤣
а за объяснения про maxCatCount спасибо!
0