我正在考虑使用带有静态初始化程序的枚举,如下所示:
public enum MyEnum{
...
private static HashMap<X, Y> features;
static {
features.put(X, new (Y));
}
...
}
每次我需要一个值时,HashMap 是否会重新初始化?
不,像所有静态块一样,它仅在类型初始化时执行。
所以这只会做一次。
但是你应该影响你的地图的价值:你不会在我们看到的代码中这样做。你应该有
private static Map<X, Y> features;
static {
features = new HashMap<X, Y>();
features.put(X, new Y());
}
不,静态块只会在类初始化时执行一次。它不会在每次调用检索时执行。
不,静态初始化程序仅在加载类时运行。
不,只有一次。
顺便说一句:番石榴 ImmutableMap可以帮助:
private static Map<X, Y> features = ImmutableMap.of(X1, Y1, X2, Y2...));
益处: