Getting all names in an enum as a String[]

前端 未结 21 1196
执笔经年
执笔经年 2020-12-01 03:50

What\'s the easiest and/or shortest way possible to get the names of enum elements as an array of Strings?

What I mean by this is that if, for example,

相关标签:
21条回答
  • 2020-12-01 04:50

    I did a bit test on @Bohemian's solution. The performance is better when using naive loop instead.

    public static <T extends Enum<?>> String[] getEnumNames(Class<T> inEnumClass){
        T [] values = inEnumClass.getEnumConstants();
        int len = values.length;
        String[] names = new String[len];
        for(int i=0;i<values.length;i++){
            names[i] = values[i].name();
        }
        return names;
    }
    
    //Bohemian's solution
    public static String[] getNames(Class<? extends Enum<?>> e) {
        return Arrays.stream(e.getEnumConstants()).map(Enum::name).toArray(String[]::new);
    }
    
    0 讨论(0)
  • 2020-12-01 04:52

    I would write it like this

    public static String[] names() {
    
        java.util.LinkedList<String> list = new LinkedList<String>();
        for (State s : State.values()) {
            list.add(s.name());
        }
    
        return list.toArray(new String[list.size()]);
    }
    
    0 讨论(0)
  • 2020-12-01 04:52

    Another way to do it in Java 7 or earlier would be to use Guava:

    public static String[] names() {
        return FluentIterable.from(values()).transform(Enum::name).toArray(String.class);
    }
    
    0 讨论(0)
提交回复
热议问题