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

新手上路,请多包涵

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

这是我的代码问题的示例:

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

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

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

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

原文由 Jared 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 677
2 个回答

这应该这样做:

 public static boolean contains(String test) {

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

    return false;
}

这种方式意味着您不必担心稍后添加额外的枚举值,它们都会被检查。

编辑: 如果枚举非常大,您可以将值粘贴在 HashSet 中:

 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") 返回真或假。

原文由 Richard H 发布,翻译遵循 CC BY-SA 3.0 许可协议

改用 Apache commons lang3 lib

  EnumUtils.isValidEnum(MyEnum.class, myValue)

原文由 RaphC 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题