Статический
Ключевое слово static
означает, что член объекта, в данном случае поле, не привязан к экземпляру класса, а вместо этого является членом класса. Если статический член является полем, он инициализируется во время загрузки класса.
Он доступен через класс, а не через экземпляр (хотя последнее не невозможно, это считается дурным тоном), поэтому он доступен без запуска конструктора вообще — никогда.
Финал
Ключевое слово final
, примененное к полю объекта, означает, что оно может быть назначено только один раз и что оно должно быть назначено во время инициализации.
Статический финал
Взятые вместе, эти два ключевых слова эффективно определяют константу: она может быть назначена только один раз, должна быть назначена и одинакова для всех экземпляров этого класса.
Поскольку статическое поле инициализируется во время загрузки класса, оно должно быть инициализировано либо при объявлении, либо в блоке статического инициализатора.
Это означает, что если и когда вы дойдете до конструктора, он уже будет инициализирован, потому что он должен уже быть инициализирован.
Синглтон
Если вы ищете члена класса, которому назначаете только один раз, но читаете много раз, вы имеете дело с одиночка. Шаблон singleton обычно используется для доступа к общему ресурсу.
Поле делается статическим, но не окончательным; вместо этого при доступе к полю код проверяет, было ли оно уже инициализировано, если нет, то это делается тут же. Обратите внимание, что в средах с несколькими потоками вам необходимо синхронизировать доступ к полю, чтобы избежать доступа к нему во время его инициализации.
person
SQB
schedule
24.12.2019