Getting all names in an enum as a String[] Getting all names in an enum as a String[] arrays arrays

Getting all names in an enum as a String[]


Here's one-liner for any enum class:

public static String[] getNames(Class<? extends Enum<?>> e) {    return Arrays.stream(e.getEnumConstants()).map(Enum::name).toArray(String[]::new);}

Pre Java 8 is still a one-liner, albeit less elegant:

public static String[] getNames(Class<? extends Enum<?>> e) {    return Arrays.toString(e.getEnumConstants()).replaceAll("^.|.$", "").split(", ");}

That you would call like this:

String[] names = getNames(State.class); // any other enum class will work

If you just want something simple for a hard-coded enum class:

public static String[] names() {    return Arrays.toString(State.values()).replaceAll("^.|.$", "").split(", ");}


Create a String[] array for the names and call the static values() method which returns all the enum values, then iterate over the values and populate the names array.

public static String[] names() {    State[] states = values();    String[] names = new String[states.length];    for (int i = 0; i < states.length; i++) {        names[i] = states[i].name();    }    return names;}


Here`s an elegant solution using Apache Commons Lang 3:

EnumUtils.getEnumList(State.class)

Although it returns a List, you can convert the list easily with list.toArray()