Я не думаю, что вы поняли концепцию перечислений в Java; это так же, как любой другой тип. Рассматривайте его как класс, если необходимо, для всех перечислений в Java расширение 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.