перечисления с несколькими значениями, чтобы иметь описание - PullRequest
0 голосов
/ 14 января 2020
public enum MyType {
  Type1("A","B"),
  Type2("C","D" );


  private List<String> value;

  MyType(String... value) {
    this.value = Arrays.asList(value);
  }

  public static Optional<MyType> fromString(String type) {
    return Arrays.stream(MyType.values())
        .filter(typ -> MyType.getValue().contains(typ)).findFirst();
  }

  private List<String> getValue() {
    return value;
  }

}

Я хочу, чтобы enum Type1 и Type 2 также имели описание

MyType1.fromString ("A") вернет Необязательно. Я хочу, чтобы метод возвращал значение "Type1"

1 Ответ

0 голосов
/ 14 января 2020

Если вам нужно «описание», вы можете добавить его, но, поскольку у вас есть переменная, это должен быть первый аргумент. Кроме того, ваш метод fromString игнорирует аргумент type (так что вы должны это исправить). Что-то вроде

public enum MyType {
    Type1("Type1 Description", "A", "B"), Type2("Type2 Description", "C", "D");

    private String description;
    private List<String> value;

    MyType(String description, String... value) {
        this.description = description;
        this.value = Arrays.asList(value);
    }

    public static Optional<MyType> fromString(String type) {
        return Arrays.stream(MyType.values())
                .filter(typ -> typ.getValue().contains(type)).findFirst();
    }

    private List<String> getValue() {
        return value;
    }

    public String getDescription() {
        return description;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...