我想要一个扩展 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/