将枚举元素的名称获取为Strings 数组的最简单和/或最短的方法是什么?
我的意思是,例如,如果我有以下枚举:
public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED;
public static String[] names() {
// ...
}
} 该names()方法将返回数组{ "NEW", "RUNNABLE", "BLOCKED", "WAITING", "TIMED_WAITING", "TERMINATED" }。 问题来源于stack overflow
这是任何enum班级的一线客:
public static String[] getNames(Class > e) { return Arrays.stream(e.getEnumConstants()).map(Enum::name).toArray(String[]::new); } Java 8之前的版本仍然是单一的,尽管不太优雅:
public static String[] getNames(Class > e) { return Arrays.toString(e.getEnumConstants()).replaceAll("^.|.$", "").split(", "); } 您会这样称呼:
String[] names = getNames(State.class); // any other enum class will work 如果您只想为硬编码的枚举类提供一些简单的方法:
public static String[] names() { return Arrays.toString(State.values()).replaceAll("^.|.$", "").split(", "); }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。