Java утверждает, что порядковый номер начального значения равен 0. Могу ли я предположить, что при создании перечисления, подобного этому:
public enum Direction {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, ...}
Что порядковый номер TUESDAY
всегда равен 1, порядковый номер WEDNESDAY
всегда 2, ...?
Я буду немного конкретнее. Я объявляю перечисление:
public enum Direction {UP,RIGHT,DOWN,LEFT}
Теперь есть метод поворота на 90 градусов (по часовой стрелке). Это одна строка с порядковыми номерами:
direction = Direction.values()[direction.ordinal()+1 % Direction.values().length];
Если бы я не использовал ординалы, мне пришлось бы использовать операторы или условия переключения:
switch (direction) {
case LEFT:newdirection = Direction.UP;
break;
etc...
}
Есть несколько преимуществ использования ординалов:
- более короткий код
- более быстрый код (незначительный)
- если направление добавлено (например,
DOWN_LEFT
), реализация не обязательно должна измениться, если вы поместите новое направление в нужное место
Что вы думаете?