Похоже, предположение, лежащее в основе вашего вопроса, неверно.Вы можете включить enum
значения, целочисленные типы (char
, int
, byte
и т. Д.) Или String
экземпляры.
Внутренне все переключатели компилируются в одну из двух инструкций, lookupswitch
или tableswitch
.Обе инструкции требуют, чтобы каждый случай был помечен отдельным целым числом.Когда вы используете значение enum
, используется «порядковый номер» значения.При использовании экземпляров String
компилятор вставляет дополнительный код, чтобы сопоставить каждую строку с уникальным значением.Другие типы используются напрямую.Вы можете прочитать об этом в другом ответе.
Методы в enum
служат той же цели, что и методы в любом другом объекте.Вы можете использовать их для реализации полиморфного поведения, или как простые методы доступа, или как угодно.