Mutiple Values ​​в одном перечислении - PullRequest
0 голосов
/ 03 марта 2020

У меня ниже enum

public enum ApiGroup {
    H("gp"),
    S_CARDS("cards"),
    S_CARDMETADATA("cardmetadata"),
    S_PRODUCTS("products");

    private String value;

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

    public String getValue() {
        return value;
    }

    private static final List<String> sApiGroups = Arrays
        .asList(ApiGroupType.S_CARDS.value, ApiGroupType.S_CARDMETADATA.value, ApiGroupType.S_PRODUCTS.value );

    public static List<String> getSApiGroupsList() {
        return sApiGroups;
    }

В настоящее время я получаю необходимые значения через создание списка. Если какое-либо будущее добавление требуется в список, необходимо сначала добавить требуемые значения в виде enum, а затем в списке, есть ли лучший способ избежать этого добавления в 2 местах. Путем добавления стоимости в одном месте должно работать.

Ответы [ 2 ]

3 голосов
/ 03 марта 2020

Измените свой метод на следующий и удалите список sApiGroups stati c.

public static List<String> getSApiGroupsList() {
    return Arrays.stream(values())
            .filter(apiGroup -> apiGroup.name().startsWith("S_"))
            .map(ApiGroup::getValue)
            .collect(Collectors.toList());
}

Подробнее о методе values() см. В документах .

Редактировать

Согласно комментарию @ ernest_k , нам не нужно stream для каждого вызова этого метода , Так можно просто иметь:

private static final List<String> sApiGroups = Arrays.stream(values())
        .filter(apiGroup -> apiGroup.name().startsWith("S_"))
        .map(ApiGroup::getValue)
        .collect(Collectors.toList());

public static List<String> getSApiGroupsList() {
    return sApiGroups;
}
0 голосов
/ 03 марта 2020

Привет Kashyap, вы можете использовать ApiGroup.values ​​(), который возвращает массив значений.

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