Правильно ли я оформил перечисление?
Есть отдельный .java файл с перечислением enum, можно ли так перегружать метод toString, и правильно ли вообще использовать условные операторы в этом случае?
public enum FoodType {
ALL_INCLUSIVE,
BREAKFAST_ONLY,
NOT_INCLUDET;
@Override
public String toString() {
if (super.toString() == "ALL_INCLUDIVE") {
return "Все включено";
}
if (super.toString() == "BREAKFAST_ONLY") {
return "Только завтрак";
}
if (super.toString() == "NOT_INCLUDET") {
return "Не включено";
}
return "Nothing";
}
}
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Ответ: разумеется, это неправильно, причем по многим причинам. Предлагаю другой вариант решения проблемы. Дело в том, что enum в Java - это прежде всего класс (просто немного особенный), а, следовательно, он тоже может иметь поля. Посему я бы на вашем месте завел поле для хранения строки и пользовался бы геттером. И еще... Хватит сравнивать строки (как и любые другие объекты) с помощью ==, для этого есть метод equals.Оставьте == для примитивов и enum.
public enum FoodType {
ALL_INCLUSIVE("Все включено"),
BREAKFAST_ONLY("Только завтрак"),
NOT_INCLUDET("Не включено");
private final String value;
private FoodType(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}