Это хорошая практика для использования статических инициализаторов?
Есть ли альтернатива статическим инициализаторам в 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");