使用静态初始化器是一个好习惯吗?

时间:2018-06-26 19:59:57

标签: java static-initialization static-initializer

在Java中,静态初始化程序是否可以替代?

只是一个随机的例子:

private static List<String> list;

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

这会增加调试难度吗?

1 个答案:

答案 0 :(得分:4)

如果您需要静态列表,则需要在某处进行初始化。静态初始化器是一个不错的选择,尽管在此示例中,您可以将其修整为一个衬里:

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