Статические инициализаторы Java и отражение - PullRequest
2 голосов
/ 12 марта 2012

Использование Java Reflection Я заметил, что все классы запускают свои статические конструкторы, когда нацелены на отражение.Можно ли заставить эти статические конструкторы вернуть или не запускать их вообще?

Ответы [ 2 ]

7 голосов
/ 12 марта 2012

Нет.Статический инициализатор вызывается, как только класс загружается загрузчиком классов и инициализируется.

0 голосов
/ 16 января 2013

Я добавляю свой ответ, потому что я думаю, что ответы Божо теперь слишком короткие;)

Отражение может инициализировать класс, только загрузка класса не инициализирует его.Например, запрос значения из статического поля гарантирует, что статический инициализатор будет вызван до того, как вы получите фактическое значение.Только получить поле обычно нет.Таким образом, если ваш рефлексивный код вызывает выполнение статического инициализатора и вам действительно нужно сделать это именно так, то нет способа предотвратить вызов этих инициализаторов.Если вы хотите, чтобы им не звонили, вы должны изменить то, что вы делаете, с помощью Reflection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...