Лучшая стратегия, чтобы избежать статического инициализатора

1

Я переношу некоторый старый код на новую платформу, а устаревшая платформа имеет статический инициализатор. как

private final static long var;

static {
 var = Long.parseLong(System.getProperty("var.proerty"));
}

Я хочу избежать этого в своем новом коде. Может ли кто-нибудь сказать мне, что является лучшей стратегией, чтобы избежать этого. Могу ли я просто создать переменную как статическую переменную и инициализировать ее одновременно. как

private final static Long var = Long.parseLong(System.getProperty("var.proerty"));
  • 0
    Почему вы пытаетесь избежать этого, в частности? Это то, что вам действительно нужно для каждого класса? Мне кажется, что это будет статичным и не будет применяться в каждом конкретном случае, и в этом случае это предполагает, что оно также должно быть final .
  • 0
    Спасибо за предложение. Причина, по которой я пытаюсь избежать упрощения метода для написания автоматизированного теста.
Показать ещё 7 комментариев
Теги:

1 ответ

3
Лучший ответ

Ответ на ваш вопрос Могу ли я просто создать var в качестве переменной экземпляра и инициализировать его? есть Да:

private final static String var = System.getProperty("var.property");

является вполне приемлемой формой инициализации.

Примечание. String vs. Long - System.getProperty() возвращает строку, вам придется преобразовать ее в Long, если это вам нужно.

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

  • 1
    Я бы посоветовал вам изменить свой ответ, поскольку в вашем примере кода не показана инициализируемая переменная экземпляра . Это статическая переменная, а не переменная экземпляра. Это должно быть ясно для ОП и будущих читателей, которым я верю.
  • 0
    @Laf OP говорит, что var является переменной экземпляра, но код, показанный следующим OP, использует private final static . В вопросе есть несоответствие, и я решил использовать код, показанный в вопросе.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню