2015-04-06 81 views
17

是否有任何Java 8法或简单的方法,返回枚举值作为字符串的列表,如:获取枚举值的字符串列表中的Java 8

List<String> sEnum = getEnumValuesAsString(); 
+1

将枚举值作为字符串的含义是什么?你想要一个枚举常量的名字列表吗? – user2357112 2015-04-06 05:45:53

+0

@ user2357112,值为'列表字符串' – 2015-04-06 05:50:12

+0

这并没有回答这个问题。枚举值不是字符串。 – user2357112 2015-04-06 05:51:42

回答

52

你可以做(​​前的Java 8 ):

​​

List<Enum> enumValues = new ArrayList<Enum>(EnumSet.allOf(Enum.class)); 

使用Java8功能,您可以将每个常量映射到它的名字:

List<String> enumNames = Stream.of(Enum.values()) 
           .map(Enum::name) 
           .collect(Collectors.toList()); 
+0

很好的答案。考虑运行时,是否有任何使用流数组的列表来考虑运行时? – Hannes 2015-04-06 05:51:58

+1

No.使用Streams可以实际提高性能,因为它可以并行处理。 – 2015-04-06 05:53:50

+5

您还可以使用Stream.of或Arrays.stream稍微缩短asList(...)。stream()。 – Radiodef 2015-04-06 05:56:01