Получить значения enum в виде списка строк - PullRequest
2 голосов
/ 20 марта 2019

У меня есть следующее перечисление, и я хочу преобразовать его в список его строковых значений:

@Getter
@AllArgsConstructor
public enum danger{

    Danger("DGR"),
    Normal("NOR");


    /**
     * The value.
     */
    private final String value;
}

Требуемый вывод: Список "DGR" и "NOR"

Мое текущее решение выглядит так:

List<String> dangerlist = Stream.of(DangerousShipment.values())
                .map(Enum::name)
                .collect(Collectors.toList());

Проблема в том, что я могу выбрать только имя перечисления, а не фактическое значение.

Ответы [ 2 ]

3 голосов
/ 20 марта 2019

Добавьте геттер для значения:

public enum DangerShipment {
    // Code from the OP omitted for brevity

    public String getValue() {
        return value;
    }
}

И использовать его при построении списка:

List<String> dangerlist = Stream.of(DangerousShipment.values())
                                .map(DangerousShipment::getValue)
                                .collect(Collectors.toList());
1 голос
/ 20 марта 2019

Вот полный код:

    public enum danger {

        Danger("DGR"), Normal("NOR");

        private danger(String value) {
            this.value = value;
        }

        /**
         * The value.
         */
        private final String value;

        /**
         * @return the value
         */
        public String getValue() {
            return value;
        }
    }

List<String> dangerlist = Stream.of(danger.values())
                                .map(x -> x.getValue())
                                .collect(Collectors.toList());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...