2015-04-06 10 views
17

Czy istnieje metoda Java 8 lub łatwy sposób, który zwraca wartości Enum jako lista String, jak:Get wartości enum lista String w Java 8

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

Co to znaczy uzyskać wartość wyliczenia jako ciąg znaków? Czy chcesz listę nazw stałych enum? – user2357112

+0

@ user2357112, wartości jako 'lista String'a –

+0

To nie odpowiada na pytanie. Wartości wyliczeń nie są ciągami. – user2357112

Odpowiedz

52

Można to zrobić (pre-Java 8):

List<Enum> enumValues = Arrays.asList(Enum.values()); 

lub

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

Korzystanie z funkcji Java8 można odwzorować każdy stały na jego imię:

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

Świetna odpowiedź. Czy istnieje jakaś wada wykorzystania tablicy stream over do uwzględnienia w środowisku wykonawczym? – Hannes

+1

Nie. Korzystanie z strumieni może poprawić wydajność, ponieważ może być przetwarzane równolegle. –

+5

Możesz także skrócić 'asList (...). Stream()' używając 'Stream.of' lub' Arrays.stream'. – Radiodef