У меня этот класс под названием Food
.Избегание операторов switch для типов перечислений
Внутри пищи является перечисление 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
случайным образом возвращать одно из значений из моего ENUM.
Проблема, которую я испытываю, заключается в том, что некоторые другие свойства пищи будут зависеть от ее типа (например, размера). Это заставляет меня постоянно проверять, что такое тип продуктов, прежде чем устанавливать его свойства, и я нахожу себя постоянно пишущими операторы switch и просто делая вещи похожими на полный беспорядок.
Я думал о создании подклассов Food
вместо использования перечисления, но мне интересно, может ли кто-нибудь увидеть другой способ, поскольку я могу потенциально в конечном итоге с множеством классов, если я это сделаю.
@DoorknobofSnow Извините, я использую Java – Colin
'public class Fruit extend Food ', а затем переопределяет виртуальных участников. Возможно, вам не понадобится один класс для каждого фрукта. –
Создайте перечисление со свойствами типа [Планета] (http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html) enum – pauli