マップのキーと値の両方がString
なので、あなたはコンストラクタが可変引数を取ると、それはあなたのためのマップを作成してみましょうことができます:
public enum Day {
SUNDAY("Foo", "Fooz",
"Bar", "Barz",
"Hello", "Hi");
private final Map<String, String> map;
Day(String... keysAndValues) {
if ((keysAndValues.length & 1) != 0)
throw new IllegalArgumentException("keysAndValues has odd size: " + Arrays.toString(keysAndValues));
this.map = new HashMap<>();
for (int i = 0; i < keysAndValues.length; i += 2) {
if (keysAndValues[i] == null || keysAndValues[i + 1] == null)
throw new NullPointerException();
if (this.map.put(keysAndValues[i], keysAndValues[i + 1]) != null)
throw new IllegalArgumentException("keysAndValues has duplicate key named '" + keysAndValues[i] + "': " + Arrays.toString(keysAndValues));
}
}
public Map<String, String> getMap() {
return this.map;
}
}
あなたはSUNDAY
用のマップを印刷する場合、例えばSystem.out.println(Day.SUNDAY.getMap())
は、あなたが得る:
{Bar=Barz, Hello=Hi, Foo=Fooz}
あなたはこの[例](https://codereview.stackexchange.com/questions/46175/java-enum-containing-a-hash-map-for-look-upを参照してくださいと仮定します) –
@RajithPemabanduその例は少し異なります。私は、commongマップは必要ありませんが、それぞれのenum値ごとに異なるマップが必要です。 – wittyameta