我有一个叫做Food的课程。

食物内部是一个枚举FoodType

public class Food {

public enum FoodType {
    STRAWBERRY, COOKIE, CHILLI, APPLE, BURGER, HOTDOG, PIZZA, LEMON
}
FoodType foodType;
...
}


在我的食物构造函数中,我有这个:

public Food(Vector2 position) {
    ...

    this.foodType=generateFoodType();
}


其中generateFoodType将从我的枚举中随机返回值之一。

我遇到的问题是食物的某些其他属性将取决于食物的类型(例如大小)。这迫使我在设置食物属性之前要不断检查食物的类型,我发现自己不断在写switch语句,只是使事情看起来一团糟。

我曾考虑过创建Food的子类而不是使用枚举,但是我想知道是否有人可以看到另一种方法,因为如果这样做,我可能会得到很多类。

最佳答案

只需将属性添加到enum值即可。这个问题包含许多方法来做到这一点:Conveniently map between enum and int / String

您甚至可以将方法添加到枚举和override them for each value中。

07-26 08:38