在Python中,您可以:
if error_code in (1213,1205,1317,2006,2013):
...
如何在Java中简明扼要地执行同样的检查-查看int是否为众多选项之一?
更新:我采用的解决方案:
private static final Set<Integer> MySQLRetryCodes =
Collections.unmodifiableSet(new HashSet<Integer>(
Arrays.asList(
1205, // lock timeout
1213, // deadlock
1317,2006,2013 // variations on losing connection to server
)));
然后:
if(MySQLRetryCodes.contains(sqlError.getErrorCode()) {
...
发布于 2012-10-19 15:11:48
我会使用HashSet:
if (new HashSet<Integer>
(Arrays.asList(1213,1205,1317,2006,2013)).contains(error_code)){
//do something
}
发布于 2012-10-19 15:04:00
常量将在列表中,您将使用contains()
方法,如下所示:
if (Arrays.asList(1213,1205,1317,2006,2013).contains(error_code)) {
...
}
最好的方法是将此列表声明为某个常量并使用它,如下所示:
public static final List<Integer> ERROR_CODES =
Arrays.asList(1213,1205,1317,2006,2013);
...
if (ERROR_CODES.contains(error_code)) {
...
}
发布于 2012-10-19 15:16:14
为错误代码编写ArrayList
是真正的bad design
。And populate it just to check whether error code is present is nightmare.
您应该考虑用Enums替换您的整数。
您可以将错误代码定义为枚举,并且每个常量将保存错误代码的int常量值。
enum ErrorCode {
ERROR_213(213), ERROR_1205(1205), ERROR_1317(1317), ERROR_2006(2006), ERROR_DEFAULT(
1);
private int errorcode;
private ErrorCode(int errorcode) {
this.errorcode = errorcode;
}
public static ErrorCode valueOf(int errorcode) {
for (ErrorCode error : ErrorCode.values()) {
if (error.getErrorCode() == errorcode)
return error;
}
return ErrorCode.ERROR_DEFAULT;
}
public int getErrorCode() {
return errorcode;
}
}
现在,如果您想在任何时候将int
值转换为enum
,则可以执行以下操作
ErrorCode errorcode = ErrorCode.valueOf(213);
https://stackoverflow.com/questions/12968989
复制相似问题