java - 使用实现接口(interface)的枚举作为 EnumMap 中的参数作为键

标签 java enum-map

我想要一个扩展 BaseClass 的子类系列,而 BaseClass 又定义了一个 EnumMap。根据 IDE,我插入此代码。它告诉我构造函数

EnumMap<B, Integer>()

未定义,分别表示B不在指定范围内。

interface A {}
enum B implements A {hello, world}

abstract class BaseClass {
    protected EnumMap<? extends A, Integer> baseMap;
}

class ChildClass extends BaseClass {
    public ChildClass () {
        baseMap = new EnumMap<B,Integer>();
    }
}

例如倒数第三行给我带来了麻烦。我不明白有什么问题。

最佳答案

EnumMap 采用the constructor 中的enum :

baseMap = new EnumMap<B,Integer>(B.class);

当我们处于post Java 7 world

baseMap = new EnumMap<>(B.class);
<小时/>

我建议在声明中使用Map - 编程到接口(interface):

protected Map<? extends A, Integer> baseMap;

关于java - 使用实现接口(interface)的枚举作为 EnumMap 中的参数作为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49611211/

相关文章:

java - SwingX如何获取JXMonthView的子组件?

java - 用户输入问题的代码双方程错误

java - 为什么 EnumMap 内部数组是 transient 的

Java - 当枚举本身可以用作映射时为什么要使用 EnumMap?

java - 如何在抽象方法中使用泛型 EnumMap 作为参数

java - Java中有类似嵌套枚举的东西吗?

java - 使用java 8流的if-else条件

java - 使用递归绘制树

java - 尝试在 Spring 中将 Aspect 添加到 MongoTemplate 时出错

java - 为什么 EnumMap 不是 Java 中的 SortedMap?