Полезно ли использовать статические инициализаторы? - PullRequest
0 голосов
/ 26 июня 2018

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

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

private static List<String> list;

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

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

1 Ответ

0 голосов
/ 26 июня 2018

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

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");
...