Я чувствую, что я просто что-то пропустил или, возможно, это не использование перечисления. Довольно много я знаю, что я мог бы очистить этот код с помощью перечисления:java simple switch with enum
int bookTypeId = 1; //dynamic
String bookTypeName;
switch (bookTypeId) {
case 1:
bookTypeName = "Fantasy";
break;
case 2:
bookTypeName = "Horror";
break;
case 3:
bookTypeName = "Action";
break;
default:
bookTypeName = "Error";
}
И так я сделал, я хранил его в другом классе, и это выглядит следующим образом:
public static enum BookType {
HORROR("Horror"), FANTASY("Fantasy"), ACTION("Action"), ERROR("Error");
private String name;
BookType(String name) {
this.name = name;
}
public String getType() {
return name;
}
}
Используя это сейчас нравится:
switch (bookTypeId) {
case 1:
bookTypeName = MYConstants.BookType.FANTASY.getType();
break;
case 2:
bookTypeName = MYConstants.BookType.HORROR.getType();
break;
case 3:
bookTypeName = MYConstants.BookType.ACTION.getType();
break;
default:
bookTypeName = MYConstants.BookType.ERROR.getType();
}
Я хочу сделать этот шаг дальше и очистить свой основной класс этого оператора switch (это почему я начал смотреть на перечисления, потому что сейчас кажется, что он делает то же самое).
Можно ли переместить этот переключатель/корпус внутри перечисления? А затем использовать перечисление таким образом, такие как
bookTypeName = MYConstants.BookType.getType(bookTypeId);
Кроме того, это также можно объявить это перечисление, используя окончательную (который в настоящее время жалуется, когда я пытаюсь), или это уже окончательное?
Спасибо!
Есть причина, почему вы кладете перечисление внутри 'MYConstants', вместо автономных ? –
Я думаю, что «класс» будет работать лучше в этой ситуации. – mrres1
@OP у вас есть несколько ответов здесь; пожалуйста, примите один из них, если он ответит на ваш вопрос. –