Как уже было прокомментировано, вам придется зарегистрироваться, чтобы узнать наверняка. Даже при вашем подходе к синтаксическому анализу вы можете ускорить его, возвращая перечисление при разборе списка.
private WeekDay getValidWeekDay(String day) {
for (WeekDay weekDay : WeekDay.values()) {
if(weekDay.toString().equals(day))
return weekDay;
}
return null;
}
Если это не критичная по времени часть приложения, я бы не стал беспокоиться об этом в любом случае и просто выбрал бы наиболее читаемый подход. Я думаю, что будет использовать метод WeekDay.valueOf ().
Если вы предпочитаете не иметь дело с исключениями, то создайте Map ваших значений в пределах перечисления и фактически сделайте эквивалент valueOf () из поиска, который возвращает ноль, если он не найден.
public enum WeekDay {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;
private static Map<String, WeekDay> valueMap;
public static WeekDay getValue(String possibleName)
{
if (valueMap == null)
{
valueMap = new HashMap<String, WeekDay>();
for(WeedDay day: values())
valueMap.put(day.toString(), day);
}
return valueMap.get(possibleName);
}
}
Это фактически то, что метод valueOf () делает в любом случае, за исключением того, что он выдает исключение IllegalArgumentException, когда он не найден. Этот подход просто возвращает ноль, таким образом не генерируя трассировку стека.