Java: Check if enum contains a given string?
This should do it:
public static boolean contains(String test) { for (Choice c : Choice.values()) { if (c.name().equals(test)) { return true; } } return false;}
This way means you do not have to worry about adding additional enum values later, they are all checked.
Edit: If the enum is very large you could stick the values in a HashSet:
public static HashSet<String> getEnums() { HashSet<String> values = new HashSet<String>(); for (Choice c : Choice.values()) { values.add(c.name()); } return values;}
Then you can just do: values.contains("your string")
which returns true or false.
You can use Enum.valueOf()
enum Choices{A1, A2, B1, B2};public class MainClass { public static void main(String args[]) { Choices day; try { day = Choices.valueOf("A1"); //yes } catch (IllegalArgumentException ex) { //nope }}
If you expect the check to fail often, you might be better off using a simple loop as other have shown - if your enums contain many values, perhaps builda HashSet
or similar of your enum values converted to a string and query that HashSet
instead.