¿Cuál consideraría más eficiente?Java Enum valueOf efficiency
El uso de 'WeekDay' es sólo un ejemplo:
public enum WeekDay {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;
}
bucle a través y verificar cadena día primero:
public void parseString(String line) {
String[] tokens = line.split();
String day = tokens[1]; // day 'should' always be a weekday
if (isValidWeekDay(day)) {
WeekDay weekDay = WeekDay.valueOf(day); // won't throw exception
...
} else {
throw new InvalidWeekDayException(day); // subclass of RuntimeException
}
}
private boolean isValidWeekDay(String day) {
for (WeekDay weekDay : WeekDay.values()) {
if(weekDay.toString().equals(day))
return true;
}
return false;
}
O ya que en el 99,99% de los casos, el día será correcta:
public void parseString(String line) {
String[] tokens = line.split();
String day = tokens[1]; // day 'should' always be a weekday
try {
WeekDay weekDay = WeekDay.valueOf(day); // might throw exception
...
} catch (IllegalArgumentException e) {
throw new InvalidWeekDayException(day, e);
}
}
Actualización:
Para aclarar, la cadena de entrada vendrá de una aplicación cliente, en lugar de un usuario. En otras palabras, sería un error recibir un día no laborable en este ejemplo.
Puede sonar como una respuesta graciosa, pero consideraría el que corrió más rápido cuando lo describí como el más eficiente. –
¿La cadena proviene de algo que ingresa un usuario, o viene todo internamente? – DHall
Yo usaría esto en su lugar, si realmente está haciendo una enumeración de días de la semana: http://joda-time.sourceforge.net/field.html#dayOfWeek – NimChimpsky