我justed偶然發現了你的問題,以爲我想解釋一下爲什麼這是不可能使用不同的枚舉作爲鍵地圖。
爲了做到這一點,我們首先要研究EnumMap的實現。在Java中,EnumMap只是一個包含值對象數組的對象。讓我們假設這個例子:
你有你的枚舉類顏色:
enum Colors {
BLUE,
RED,
YELLOW;
}
和存儲一些顏色的水果在EnumMap的一類:
class MyClass {
EnumMap<Colors, String> coloredFruits = new EnumMap<>(Colors.class);
void main() {
coloredFruits.put(Colors.RED, "Apple");
coloredFruits.put(Colors.BLUE, "Grape");
coloredFruits.put(Colors.YELLOW, "Banana");
}
}
什麼Java沒有現用以下數組創建一個新的EnumMap - 對象:
String[] values = { "Grape", "Apple", "Banana" }
這正是使EnumMap如此高效的原因。它實際上不僅僅是一個具有一系列值對象和一些存儲類的字段的對象(在我們的例子中,它將是Class keyType = Colors.class
)。爲了使其按照預期工作,只能有一個keyType類。
你得到的錯誤/異常是什麼? –
如何聲明你的枚舉映射? – Julien
這是一個演示:http://ideone.com/GBysFS;我們需要更多信息,例如錯誤消息來解決您的問題。 –