Я бы сказал, что перечисления существуют только для этих случаев, чтобы избежать сопоставления концепций с примитивными типами или классами.
Например, избегать сопоставления логики 2 значений с логическим значением или для большего количества значений (например, цветов).семафора: красный, зеленый, желтый) с целыми числами 1, 2, 3.
Перечисления существуют только для того, чтобы этого избежать, и чтобы было понятно, что означает каждый из них, улучшая разборчивость иобслуживаемость , а также безопасность типов (вы можете ограничить метод только получением типа Enum, а не более широкого типа Boolean, это делает ваш код более безопасным).