我不認爲你已經理解了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