Java establece que el ordinal del valor inicial es 0. ¿Puedo asumir que cuando se crea una enumeración de esta manera:¿Puedo suponer que las enumeraciones de Java aumenten automáticamente en 1?
public enum Direction {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, ...}
Que el ordinal de TUESDAY
es siempre 1, la de siempre WEDNESDAY
2, .. .?
Voy a ser un poco más específico. Estoy declarando una enumeración:
public enum Direction {UP,RIGHT,DOWN,LEFT}
Ahora hay un método para girar 90 grados (a la derecha). Es una línea con los ordinales:
direction = Direction.values()[direction.ordinal()+1 % Direction.values().length];
Si yo no usaría los ordinales que tendría que utilizar las declaraciones o las condiciones de conmutación:
switch (direction) {
case LEFT:newdirection = Direction.UP;
break;
etc...
}
Hay un par de ventajas de utilizar los ordinales:
- código más corto
- código más rápido (negligeable)
- si a dirección se añade (por ejemplo
DOWN_LEFT
) la puesta en práctica no necesariamente tiene que cambiar si se pone la nueva dirección en el lugar correcto
¿Qué opinas?
Si es importante (por ejemplo, para la serialización personalizada), de todos modos, sería mejor realizar una asignación explícita. Solo crea un 'EnumMap' o dale a 'Direction' un campo' int'. –
Prefiero mantenerlo limpio. Es para la escuela, pero técnicamente aún no hemos usado enumeraciones, y EnumMap podría ser un poco extremo ya que ni siquiera aprendimos acerca de las matrices: D. – Fatso
Tu noción de limpieza está un poco equivocada :-). Confiar en ordinal sería una forma extremadamente desordenada de codificar esto. –