在 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 中是不允许的还是我只是做错了?
是否有更好的方法来维护属性到代表它们的枚举的映射?
最佳答案
List<? extends Enum> enumList = new ArrayList<Color>();
Color
是 Enum
的子类型但是List<Color>
是 List<Enum>
的不是子类型 .
你必须明确地说“List of something that is subetype of Enum
”,这在 Java 中是:
List<? extends Enum>
关于java - java中枚举的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24440078/