我不认为你已经理解了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的构造函数中使用,要求(用作键的枚举的类型)作为参数传入。然后可以像其他任何地图一样使用它,并使用标准的语义和语义。
你可以有希望做到这一点可能是什么原因? EnumMap只是一个非常快速,高效的Map实现,当Enums是关键字时,其他值就是值。 – I82Much 2011-05-30 00:48:07
您是否试图将'enumA','enumB'和'enumC'中的一个值映射到一个字符串? – 2011-05-30 00:51:44
@Ted Hopp是的,想法是我想通过提供enumA,enumB和enumC来检索我的字符串。 – JVerstry 2011-05-30 00:54:13