【发布时间】:2023-03-31 02:53:01
【问题描述】:
我指的是 Joshua Bloch 在 Effective Java 中的 Item 34 中的范例。我想采用他使用的方法,即让每个相关的enum 实现一个基本接口,并从“子枚举”中初始化一个EnumMap。请参阅下面的代码部分。我收到一个我不理解的语法错误。我没有设置这种实现方法,但我想了解它为什么行不通。
请注意,此示例假定每个类定义都在其自己的文件中。
public interface BaseEnum {
...
}
public enum EnumOps1 implements BaseEnum {
...
}
public class Widget {
public Widget() {
regMap = new EnumMap<EnumOps1, WidgetData>(EnumOps1.class);
for (EnumOps1 op : EnumOps1.values()) {
regMap.put(op, getWidgetData(op.key())); // line with syntax error
}
}
protected Map<? extends BaseEnum, WidgetData> regMap;
}
语法错误详情:
接口 java.util.Map
<K,V>中的方法不能应用于给定类型
必需:捕获#1 of ?扩展 BaseEnum、WidgetData
找到:EnumOps1,WidgetData
【问题讨论】: