【发布时间】:2014-08-17 20:53:26
【问题描述】:
在 Java 中我可以这样做:
enum Color {RED, BLUE, GREEN };
enum Weight {LIGHT, HEAVY }
Enum e = Color.RED;
assertEquals(Color.RED, e);
e = Weight.HEAVY;
assertEquals(Weight.HEAVY, e);
我可以将枚举放在 Map 中并且仍然有效:
Map<String, Enum> map = Maps.newHashMap();
map.put("color", Color.RED);
map.put("weight", Weight.HEAVY);
assertEquals(Color.RED, map.get("color"));
assertEquals(Weight.HEAVY, map.get("weight"));
但是,我不能对枚举集合做同样的事情。
List<Enum> enumList = new ArrayList<Color>(); //error
这在 Java 中是不允许的还是我做错了?
有没有更好的方法来维护属性到代表它们的枚举的映射?
【问题讨论】:
-
您在
Map示例与List示例中做的事情不同。你看到了吗? (类型参数,推断和提供。) -
另外,不要使用原始类型。
-
“List
不是 List 的子类型”似乎是我在这里所缺少的。那么我怎样才能一般地存储不同的枚举集合呢? -
为什么你想要一个枚举列表而不知道它们是什么类型的枚举,例如,它们是颜色、权重还是其他什么?这有什么可能的用途?