Java での列挙の概念を理解していないと思います。他のタイプと同じです。Java extends のすべての列挙型について、必要に応じてクラスと見なしてくださいjava.lang.Enum
。したがって、列挙型の配列を構成できます(または、それが意図したものである場合は、少なくともそれらの値/定数)。次の例を見てください。
package com.example;
public class Enumerations {
public enum enumA { A1, A2, A3 };
public enum enumB { B1, B2, B3 };
public enum enumC { C1, C2, C3 };
private void test() {
Enumerations.enumA[] enumerations = new Enumerations.enumA[3];
enumerations[0] = enumA.A1;
enumerations[1] = enumA.A2;
enumerations[2] = enumA.A3;
}
}
列挙型を配列内の他の型と混在させることはできません。つまり、異なる型の多次元配列を作成することはできません。配列の型は、宣言で指定されたものと同じです。このように、列挙型を含むように宣言された配列は、たとえそれが多次元であっても、文字列を含むことはできません。したがって、次のスニペットは違法です。
package com.example;
public class Enumerations {
public enum enumA { A1, A2, A3 };
public enum enumB { B1, B2, B3 };
public enum enumC { C1, C2, C3 };
private void test() {
Enumerations.enumA[][] enumerations = new Enumerations.enumA[3][];
enumerations[0][1] = enumA.A1; //legal
enumerations[0][2] = enumB.B1; //illegal since enumB is a different type
}
元の質問に関する限り、キーが列挙型である EnumMap の使用は次の方法で行われます。
private void createAndStoreEnum() {
EnumMap<Enumerations.enumA, String> aMap = new EnumMap<Enumerations.enumA, String>(enumA.class);
aMap.put(enumA.A1, "Example");
}
使用される EnumMap コンストラクターでは、(キーとして使用される列挙型の) 型を引数として渡す必要があります。その後、標準の put および get セマンティクスを使用して、他のマップと同様に使用できます。