Java: Проверить, содержит ли enum заданную строку? - PullRequest
134 голосов
/ 08 февраля 2011

Вот моя проблема - я ищу (если он вообще существует) эквивалент перечисления ArrayList.contains();.

Вот пример моей проблемы с кодом:

enum choices {a1, a2, b1, b2};

if(choices.???(a1)}{
//do this
} 

СейчасЯ понимаю, что ArrayList из Strings будет лучшим маршрутом здесь, но мне нужно пропустить содержимое моего перечисления через переключатель / регистр в другом месте.Отсюда моя проблема.

Если предположить, что чего-то подобного не существует, как я могу это сделать?

Ответы [ 26 ]

0 голосов
/ 26 июня 2019

Если вы используете Java 8 или выше, вы можете сделать это:

boolean isPresent(String testString){
      return Stream.of(Choices.values()).map(Enum::name).collect(Collectors.toSet()).contains(testString);
}
0 голосов
/ 19 января 2014

Это объединяет все подходы из предыдущих методов и должно иметь эквивалентную производительность.Он может использоваться для любого перечисления, встраивает решение «Edit» из @Richard H и использует исключения для недопустимых значений, таких как @bestsssЕдинственный компромисс в том, что класс должен быть указан, но это превращает его в двухслойный.

0 голосов
/ 13 января 2014

С гуавой это еще проще:

boolean isPartOfMyEnum(String myString){

return Lists.newArrayList(MyEnum.values().toString()).contains(myString);

}
0 голосов
/ 24 ноября 2013
public boolean contains(Choices value) {
   return EnumSet.allOf(Choices.class).contains(value);
}
0 голосов
/ 29 июня 2019
  Set.of(CustomType.values())
     .contains(customTypevalue) 
0 голосов
/ 08 февраля 2011

enum довольно мощный в Java.Вы можете легко добавить метод contains в ваше перечисление (как если бы вы добавили метод в класс):

enum choices {
  a1, a2, b1, b2;

  public boolean contains(String s)
  {
      if (s.equals("a1") || s.equals("a2") || s.equals("b1") || s.equals("b2")) 
         return true;
      return false;
  } 

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