0

我需要的是一个允许以下内容的枚举:

想象一下,我有一个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例如 a 与 aInteriorWall有不同的纹理ExteriorWall,所以我希望它们的枚举不同。

使用示例:WallType.InteriorWall.Texture1

4

2 回答 2

2

ENUM 不是为了满足您的要求而设计的。看来您想使用经典的面向对象设计。例如:

public abstract class Animal {
}

public class Mammal extends Animal {
}

看看复合重用

于 2013-07-03T01:04:14.167 回答
0

您可以制作两个单独enum的 s 并将它们组合起来以实现类似于您所描述的内容。

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 */
}
于 2013-07-03T01:04:13.400 回答