Как мы можем сравнить строку со значениями элементов enum в Java - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть перечисление Foo

public enum Foo {

    A("first"),

    B("second"),

    private final String value;

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

    public String value() {
        return this.value;
    }

}

Ниже я пытаюсь проверить, содержится ли строка в моем перечислении.

public boolean isValidFoo(String fooStr) {
return EnumSet.allOf(Foo.class)
                        .contains(Foo.valueOf(fooStr.toUpperCase()));
}

Это работает, когда я отправляю A или B для fooStr.Как заставить это работать, когда я отправляю first или second для fooStr?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Вы можете добавить метод

  public static Foo getEnum(String value) {
        for (Foo foo : Foo.values()) {
            if (foo.value.equals(value)) {
                return foo;
            }
        }
        return null;
  }
0 голосов
/ 20 сентября 2019

Вы можете попробовать это ..

public boolean isValidFoo(String fooStr) {
    return Arrays.stream(Foo.values())
            .anyMatch(e -> e.value.equals(fooStr));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...