【发布时间】:2016-07-05 15:18:55
【问题描述】:
我有以下枚举器:
public enum UserChoice {
QUIT, LIST_BOOKS, CHECKOUT_BOOK, RETURN_BOOK, LIST_MOVIES,
CHECKOUT_MOVIE, RETURN_MOVIE, USER_INFORMATION
}
我想在一个以 int 作为参数的 switch 语句中使用它。但是,我需要获取枚举的 int 值,所以我这样做:
try {
int option = Reader.getUserOption();
} catch (InputMismatchException ex) {
option = 8;
}
switch (option) {
case UserChoice.QUIT.ordinal():
break;
case UserChoice.LIST_BOOKS.ordinal():
Printer.printBooks(library);
break;
case UserChoice.CHECKOUT_BOOK.ordinal():
// code
break;
case UserChoice.RETURN_BOOK.ordinal():
// code
break;
case UserChoice.LIST_MOVIES.ordinal():
Printer.printMovies(library);
break;
case UserChoice.CHECKOUT_MOVIE.ordinal():
// code
break;
case UserChoice.RETURN_MOVIE.ordinal():
// code
break;
case UserChoice.USER_INFORMATION.ordinal():
System.out.println(currentUser);
break;
default:
Printer.printInvalidOptionMessage();
break;
}
有什么方法可以将 int 转换为枚举值,或者我可以使用枚举来实现这一点。最后,我的意思是每个案例都有枚举器的名称,这样我就可以清楚地了解每个案例在做什么,因为之前我是使用 int 值来做的。
【问题讨论】:
-
最后我在@Darth Android、@Xoce 和@Jim Garrison 的响应之后所做的就是从
int更改为UserChoice,所以UserChoice option = UserChoice.values()[Reader.getUserOption()];,并将option设置为INVALID_OPTION(添加到枚举的新值)在 catch 块中。