我需要的是一个允许以下内容的枚举:
想象一下,我有一个名为ANIMALS
的枚举,其中包含以下元素:Mammal
,Fish
,Bird
。
我想要的是,Mammal
内有更多枚举,例如cow
,tiger
,pony
。
应该可以这样使用:
switch(animals)
{
case Mammal:
do something specific for all mammals
switch(animals.mammal)
{
case Cow:
do something specific for cow
break;
case Tiger:....
}
case Fish:
....
}
如果已经实施,请告诉我该怎么做;如果不是,请帮我找到办法。
顺便说一下,我实际需要做的是区分哪个Texture
与GameElement
我应该使用的类型。例如,InteriorWall
具有与ExteriorWall
不同的纹理,因此我希望它们的枚举不同。
使用示例:WallType.InteriorWall.Texture1
答案 0 :(得分:2)
ENUM并非旨在满足您的要求。 您似乎想要使用经典object oriented design。 例如:
public abstract class Animal {
}
public class Mammal extends Animal {
}
同时查看composite reuse。
答案 1 :(得分:0)
您可以制作两个单独的enum
并将它们组合起来,以实现类似于您所描述的内容。
public enum Classification {
MAMMAL, FISH, BIRD;
}
public enum Animal {
TIGER(MAMMAL), COW(MAMMAL), BLUEJAY(BIRD), TROUT(FISH);
private final Classification clazz;
private Animal(Classification clazz) {
this.clazz = clazz;
}
public Classification getClassification() {
return clazz;
}
}
Animal a = ...
switch(a.getClassification()) {
case MAMMAL:
/* etc */
}