Java:检查枚举是否包含给定的字符串?
这是我的问题 - 我正在寻找(如果它甚至存在)枚举等效于.ArrayList.contains();
以下是我的代码问题示例:
enum choices {a1, a2, b1, b2};
if(choices.???(a1)}{
//do this
}
现在,我意识到在这里会是更好的路线,但我必须通过其他地方的开关/案例运行我的枚举内容。因此,我的问题。ArrayList
Strings
假设这样的事情不存在,我怎么能去做呢?
这是我的问题 - 我正在寻找(如果它甚至存在)枚举等效于.ArrayList.contains();
以下是我的代码问题示例:
enum choices {a1, a2, b1, b2};
if(choices.???(a1)}{
//do this
}
现在,我意识到在这里会是更好的路线,但我必须通过其他地方的开关/案例运行我的枚举内容。因此,我的问题。ArrayList
Strings
假设这样的事情不存在,我怎么能去做呢?
使用 Apache commons lang3 lib 代替
EnumUtils.isValidEnum(MyEnum.class, myValue)
这应该这样做:
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")