将枚举中的所有名称作为 String[] [英] Getting all names in an enum as a String[]
本文介绍了将枚举中的所有名称作为 String[]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
将枚举元素的名称作为 String
数组获取的最简单和/或最短的方法是什么?
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, I had the following enum:
public enum State {
NEW,
RUNNABLE,
BLOCKED,
WAITING,
TIMED_WAITING,
TERMINATED;
public static String[] names() {
// ...
}
}
names()
方法将返回数组 { "NEW", "RUNNABLE", "BLOCKED", "WAITING", "TIMED_WAITING", "TERMINATED" }
.
推荐答案
这是任何 enum
类的单行代码:
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 仍然是单行的,虽然不那么优雅:
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(", ");
}
你会这样称呼:
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(", ");
}
这篇关于将枚举中的所有名称作为 String[]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文