我认为您没有理解 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 语义。