Java:检查枚举是否包含给定的字符串?

2022-08-31 05:46:33

这是我的问题 - 我正在寻找(如果它甚至存在)枚举等效于.ArrayList.contains();

以下是我的代码问题示例:

enum choices {a1, a2, b1, b2};

if(choices.???(a1)}{
//do this
} 

现在,我意识到在这里会是更好的路线,但我必须通过其他地方的开关/案例运行我的枚举内容。因此,我的问题。ArrayListStrings

假设这样的事情不存在,我怎么能去做呢?


答案 1

使用 Apache commons lang3 lib 代替

 EnumUtils.isValidEnum(MyEnum.class, myValue)

答案 2

这应该这样做:

public static boolean contains(String test) {

    for (Choice c : Choice.values()) {
        if (c.name().equals(test)) {
            return true;
        }
    }

    return false;
}

这样意味着您不必担心以后添加其他枚举值,它们都会被检查。

编辑:如果枚举非常大,则可以将值粘贴到哈希集中:

public static HashSet<String> getEnums() {

  HashSet<String> values = new HashSet<String>();

  for (Choice c : Choice.values()) {
      values.add(c.name());
  }

  return values;
}

然后你可以这样做:返回真或假。values.contains("your string")