Это хорошая практика для использования статических инициализаторов?

Есть ли альтернатива статическим инициализаторам в Java?

Просто случайный пример:

private static List<String> list;

static {
    list = new ArrayList<>();
    list.add("foo")
}

Разве это не затрудняет отладку?

1 ответ

Решение

Если вам нужен статический список, вам нужно его инициализировать ** где-то *. Статический инициализатор - справедливый выбор, хотя в этом примере вы можете урезать его до одной строки:

private static List<String> list = new ArrayList<>(Arrays.asList("foo"));

Или, если этот список не должен быть изменен в течение жизни программы, еще короче:

private static final List<String> list = Collections.singletonList("foo");

Или, как отмечено в комментарии, в Java 9 и выше:

private static final List<String> list = List.of("foo");
Другие вопросы по тегам