What\'s the easiest and/or shortest way possible to get the names of enum elements as an array of String
s?
What I mean by this is that if, for example,
Another ways :
First one
Arrays.asList(FieldType.values())
.stream()
.map(f -> f.toString())
.toArray(String[]::new);
Other way
Stream.of(FieldType.values()).map(f -> f.toString()).toArray(String[]::new);
Try this:
public static String[] vratAtributy() {
String[] atributy = new String[values().length];
for(int index = 0; index < atributy.length; index++) {
atributy[index] = values()[index].toString();
}
return atributy;
}
My solution, with manipulation of strings (not the fastest, but is compact):
public enum State {
NEW,
RUNNABLE,
BLOCKED,
WAITING,
TIMED_WAITING,
TERMINATED;
public static String[] names() {
String valuesStr = Arrays.toString(State.values());
return valuesStr.substring(1, valuesStr.length()-1).replace(" ", "").split(",");
}
}
org.apache.commons.lang3.EnumUtils.getEnumMap(State.class).keySet()
the ordinary way (pun intended):
String[] myStringArray=new String[EMyEnum.values().length];
for(EMyEnum e:EMyEnum.values())myStringArray[e.ordinal()]=e.toString();
Very similar to the accepted answer, but since I learnt about EnumSet, I can't help but use it everywhere. So for a tiny bit more succinct (Java8) answer:
public static String[] getNames(Class<? extends Enum<?>> e) {
return EnumSet.allOf(e).stream().map(Enum::name).toArray(String[]::new);
}