使用实现接口的枚举作为参数作为 EnumMap 中的键

Use enum that implements interface as parameter as key in EnumMap

我想要一个扩展 BaseClass 的子 类 家族,后者又定义了一个 EnumMap。根据 IDE 我插入这段代码。它告诉我 Constructor

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

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

EnumMapthe 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;