私は次のような静的初期化子で列挙型を使用することを検討しています:
public enum MyEnum{
...
private static HashMap<X, Y> features;
static {
features.put(X, new (Y));
}
...
}
HashMapは、値が必要になるたびに再初期化されますか?
いいえ、すべての静的ブロックと同様に、型が初期化されたときにのみ実行されます。
したがって、これは1回だけ実行されます。
ただし、マップの値に影響を与える必要があります。表示されるコードでは影響を与えません。あなたが持っている必要があります
private static Map<X, Y> features;
static {
features = new HashMap<X, Y>();
features.put(X, new Y());
}
いいえ、静的ブロックはクラスの初期化中に1回だけ実行されます。取得するたびに実行されるわけではありません。
いいえ、静的初期化子は、クラスがロードされたときにのみ実行されます。
いいえ、一度だけです。
ところで:Guava ImmutableMapは次のことに役立ちます:
private static Map<X, Y> features = ImmutableMap.of(X1, Y1, X2, Y2...));
利点: