2
我有一个Java静态HashMap字段的非静态类。散列映射应该使用代码生成的一些键值对进行初始化。之后,hashmap不会被改变。在Java中初始化HashMap的好设计模式选择
这应该如何实现?我应该创建一个静态初始化方法,并确保在使用该类之前运行一次,或者有更好的方法来实现它吗?
我有一个Java静态HashMap字段的非静态类。散列映射应该使用代码生成的一些键值对进行初始化。之后,hashmap不会被改变。在Java中初始化HashMap的好设计模式选择
这应该如何实现?我应该创建一个静态初始化方法,并确保在使用该类之前运行一次,或者有更好的方法来实现它吗?
你可以在你的类中使用静态初始化块。
例如
private static Map<String, String> myMap;
static {
HashMap<String,String> map = new HashMap<String,String>();
map.put("foo","bar");
myMap = Collections.unmodifiableMap(map);
}
您可以轻松创建与谷歌番石榴库一成不变的地图:
private static Map<String, String> map = ImmutableMap.of(
"key1", "value1",
"key2", "value2");
如果你想使用它的许多值,那么builder()
提供。
“map”变量的类型应该是Map,而不是HashMap。 – VGR
@VGR“应该”在这里是一个强有力的词,因为在上面的代码中改变它没有切实的价值。虽然没有真正的反对意见,但会节省一些关键笔划。类成员变量适当地是一个'Map',它只是被声明为'HashMap'的短期块范围'map'变量。 –