我有多個枚舉的所有具有相同的構造和屬性,就像這樣:「擴展」枚舉
enum Enum1 {
A(1,2),
B(3,4);
public int a, b;
private Enum1(int a, int b) {
this.a = a;
this.b = b;
}
}
enum Enum2 {
C(6,7),
D(8,9);
public int a, b;
private Enum1(int a, int b) {
this.a = a;
this.b = b;
}
}
等等... 不幸的是Enum1和Enum2已經擴展Enum,所以不是可以寫一個他們可以擴展的超類。 是否有另一種方法來歸檔?
更新:這裏是一個「現實世界」的例子。想想一個經典的RPG,你有物品,盔甲,武器等,這些都會給你帶來獎勵。
enum Weapon {
SWORD(3,0,2),
AXE_OF_HEALTH(3,4,1);
// bonus for those weapons
public int strength, health, defense;
private Weapon(int strength, int health, int defense) {
this.strength = strength;
this.health = health;
this.defense = defense;
}
}
enum Armour {
SHIELD(3,1,6),
BOOTS(0,4,1);
// bonus
public int strength, health, defense;
private Weapon(int strength, int health, int defense) {
this.strength = strength;
this.health = health;
this.defense = defense;
}
}
爲什麼你有獨立的'Enum'類具有非常枚舉相同的數據?爲什麼'C'或'D'不能進入'Enum1'?我認爲給我們具體的情況可能有助於接近真正的解決方案。 – 2012-07-10 09:40:45
請參閱[Java擴展枚舉](http://stackoverflow.com/questions/1414755/java-extend-enum)。 – Lion 2012-07-10 09:47:14
對不起,但這種設計看起來不正確。當然YMMV,但這些屬性更好的「個人」盾牌,靴子等。我建議有「項目」有一個類型字段,而這又將是一個枚舉*沒有*屬性。當然,還有其他方法可以做到這一點,但請將這些信息作爲類屬性的一部分(從配置驅動)提供,而不是讓它們「硬編碼」。 – 2012-07-10 09:54:41