如果我有一堆類都包含一個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