首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查某个值是否为多个常量之一

检查某个值是否为多个常量之一
EN

Stack Overflow用户
提问于 2012-10-19 15:00:56
回答 5查看 549关注 0票数 2

在Python中,您可以:

代码语言:javascript
复制
if error_code in (1213,1205,1317,2006,2013):
    ...

如何在Java中简明扼要地执行同样的检查-查看int是否为众多选项之一?

更新:我采用的解决方案:

代码语言:javascript
复制
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
         )));

然后:

代码语言:javascript
复制
if(MySQLRetryCodes.contains(sqlError.getErrorCode()) {
    ...
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-19 15:11:48

我会使用HashSet:

代码语言:javascript
复制
  if (new HashSet<Integer>
          (Arrays.asList(1213,1205,1317,2006,2013)).contains(error_code)){

       //do something

   }
票数 1
EN

Stack Overflow用户

发布于 2012-10-19 15:04:00

常量将在列表中,您将使用contains()方法,如下所示:

代码语言:javascript
复制
if (Arrays.asList(1213,1205,1317,2006,2013).contains(error_code)) {
    ...
}

最好的方法是将此列表声明为某个常量并使用它,如下所示:

代码语言:javascript
复制
public static final List<Integer> ERROR_CODES = 
    Arrays.asList(1213,1205,1317,2006,2013);

...
if (ERROR_CODES.contains(error_code)) {
    ...
}
票数 3
EN

Stack Overflow用户

发布于 2012-10-19 15:16:14

为错误代码编写ArrayList是真正的bad designAnd populate it just to check whether error code is present is nightmare.

您应该考虑用Enums替换您的整数。

您可以将错误代码定义为枚举,并且每个常量将保存错误代码的int常量值。

代码语言:javascript
复制
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,则可以执行以下操作

代码语言:javascript
复制
ErrorCode errorcode = ErrorCode.valueOf(213);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12968989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档