如果我有一堆类都包含一个Enum和EnumMap,我想为这些类创建一个超类。创建一个通用类型的EnumMap枚举
public interface ColorEnum {
}
class ColorMarbles extends Toy {
enum MARBLE implements ColorEnum
{ BLUE, GREEN }
EnumMap<MARBLE, String> names = new EnumMap<MARBLE, String>(MARBLE.class);
//stuff
// fields
public void populate(ArrayList<String> designer) {
int i = 0;
for(MARBLE marble : MARBLE.values()) {
marble.name = designer.get(i);
i++;
}
}
}
class ColorBalloons extends Toy {
enum BALLOON implements ColorEnum
{ YELLOW, RED }
EnumMap<BALLOON, String> names = new EnumMap<BALLOON, String>(BALLOON.class);
//stuff
// fields
public void populate(ArrayList<String> designer) {
int i = 0;
for(BALLOON balloon : BALLOON.values()) {
balloon.name = designer.get(i);
i++;
}
}
}
如何使创建一个超类具有泛型EnumMap,其中包含ColorEnum类型的枚举像这样?
public abstract class Toy {
EnumMap<ColorEnum, String> names;
}
eidt:我意识到我对我的例子太模糊了。狗可能是一个坏榜样。我把它改成希望更清楚的东西。
我所拥有的是一堆类,其中包含填充EnumMap的填充方法。名称按照预定义的顺序排列。我希望能够将它带入Toy超类,而不是在每个新类类型的Toy中都复制粘贴。
希望这将解释更多我在找什么。
我不确定你在做什么。你能把它清理一下吗? – 2013-02-20 16:13:28
为什么不简单地使用HashMap? EnumMap只是一个针对枚举的优化实现。 – 2013-02-20 16:15:40
我仍然无法在这里清楚地看到这个意图。在哪里和谁被实际称为'populate()'方法?他们为什么不能简单地静止?你是否期望在运行时使用不同的值多次调用它们(从而更改名称)?大理石和气球的“设计师”名单是否相同,这意味着蓝色大理石和黄色气球具有相同的名称或完全不相关?对不起,有这么多问题,但我仍然不明白为什么简单的枚举方法不能在这里工作。 :) – Natix 2013-02-20 17:09:52