Если вы обращаетесь к Enum JavaDoc , вы можете прочитать, что метод Enum.ordinal () возвращает числовое постоянное значение, которое определяется порядком объявлений Enum в файл класса.
Например, рассмотрим эти константы перечисления в алфавитном порядке:
public enum Fruit{
APPLE, // APPLE.ordinal() == 0
ORANGE;// ORANGE.ordinal() == 1
PEAR, // PEAR.ordinal() == 2
}
Но если мы добавим BANANA в алфавитном порядке, посмотрим, как изменятся значения, нарушив любой код, который на них опирается:
public enum Fruit{
APPLE, // APPLE.ordinal() == 0
BANANA,// BANANA.ordinal() == 1
ORANGE;// ORANGE.ordinal() == 2
PEAR, // PEAR.ordinal() == 3
}
Это означает, что до тех пор, пока вы используете одну и ту же версию исходного кода, вы можете рассчитывать на то, что базовое значение будет одинаковым, и использовать его в ситуациях, когда других вариантов нет. Я не говорю никаких других вариантов, потому что, делая ваш код зависимым от порядка перечислений, это делает код более хрупким, тогда как если вы не полагаетесь на порядковое значение, вы можете изменить порядок существующих или вставить новые константы перечисления по желанию.
Теперь, вы бы согласились с легким руганием за то, что вы не читали JavaDocs полностью перед публикацией? :)