我正在考虑使用带有静态初始值设定项的枚举:
public enum MyEnum{
...
private static HashMap<X, Y> features;
static {
features.put(X, new (Y));
}
...
}
每次我需要一个值时,HashMap是否会重新初始化?
答案 0 :(得分:6)
不,就像所有静态块一样,它只在初始化类型时执行。
所以这只会做一次。
但是你应该影响地图的价值:你不会在我们看到的代码中做到这一点。你应该
private static Map<X, Y> features;
static {
features = new HashMap<X, Y>();
features.put(X, new Y());
}
答案 1 :(得分:3)
不,静态块只在类初始化时执行一次。它不会在每次调用时执行。
答案 2 :(得分:1)
不,静态初始化程序仅在加载类时运行。
答案 3 :(得分:0)
不,只是一次。
BTW:Guava ImmutableMap可以提供帮助:
private static Map<X, Y> features = ImmutableMap.of(X1, Y1, X2, Y2...));
好处: