java - java中枚举的容器

标签 java enums

在 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>();

ColorEnum子类型但是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/

相关文章:

linux - 获取 JAVA_HOME 的两个值

java枚举编译错误 "unclosed string literal"

来自字符串输入的 C++ 枚举值

Java hibernate 仅加载子项,其中insertTime不少于x天

Java:具有彼此实例的类

java - 谷歌应用引擎 : Warmup/Loading Requests and Always On

java - 将通用类型枚举作为参数传递 (java)

javascript - 流类型中的组合枚举

c# - ComboBox 绑定(bind)到枚举类型的值,同时还具有 "blank"条目?

Java同步迭代器?