Зачем нужны enum, если есть строковые константы?

Какой самый главный смысл и отличие enum от строковой константы.

 const val NEW = "new"
 const val PAID = "paid"
 const val SHIPPED = "shipped"
 const val CANCELLED = "cancelled"

и

enum class OrderStatus {
    NEW,
    PAID,
    SHIPPED,
    CANCELLED
}

какая разница между этими двумя конструкциями? Максимум что я вижу, это красивое перечисление чего-то и удобство использования. Все, больше ничего! Можете пожалуйста объяснить мне разницу или преимущества использования enum?


Ответы (2 шт):

Автор решения: RomanDonw

фактически enum - это перечисление числовых констант, которые в отличие от строковых занимают сильно меньше места и дополнительно могут оптимизироваться компилятором. Соответственно, enum-ы используются для оптимизации кода, и дополнительно enum-ы бывает использовать удобней, нежели отдельные константы

→ Ссылка
Автор решения: Герман Борисов

Перечислимы тип (enum) — это в первую очередь договор. Договор между двумя программистами, один из которых пишет функцию, а другой использует. Для первого это гарантия того, что ему не передадут лишнее неизвестное значение, а для второго подсказка о том, что можно передать. Правильно подобранные названия в перечислении могут заменить документацию.

→ Ссылка