Загрузка констант при запуске программы - PullRequest
4 голосов
/ 01 января 2012

Когда я определяю статические или постоянные члены, например:public static final Font BIG_FONT = new Font("", Font.BOLD, 18);Я заметил, что они загружаются только при первом их использовании, что либо приводит к зависанию во время выполнения, либо вынуждает меня каким-то образом предварительно загружать их, принудительно «используя» константу при запуске программы.

Aren 't статические члены такого типа должны загружаться при запуске программы, а не ждать загрузки при первом использовании?Как я могу убедиться, что они предварительно загружены?

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 01 января 2012

В Java статика инициализируется при первом использовании класса, а не при первом использовании самого статического члена.Вы можете принудительно выполнить «предварительную загрузку», используя любой другой член этого класса, не обязательно само статическое поле.

2 голосов
/ 01 января 2012

что вы можете сделать, это создать метод статического загрузчика и включить его во время вашего метода инициализации.

2 голосов
/ 01 января 2012

номер

Статические инициализаторы выполняются при первой загрузке класса.

Java Runtime не изо всех сил инициализирует каждый класс, как только вы запускаете программу; это было бы очень плохой идеей.

1 голос
/ 01 января 2012

Как уже упоминалось, статика инициализируется при первой загрузке класса.

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

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