Мне очень понравилось использовать С# и Java перечисления в моем коде по нескольким причинам:
- Они гораздо более безопасны по типу, чем целые числа, строки или наборы логических флагов.
- Они приводят к более читаемому коду.
- Сложнее установить перечисление на недопустимое значение, чем int или string.
- Они позволяют легко обнаружить допустимые значения для переменной или параметра.
- Все, что я прочитал, указывает, что они выполняют так же, как и целые числа в С# и большинстве JVM.
Однако в платформе Android есть множество случаев, когда флаги разных типов должны быть переданы, но ни один из них, похоже, не использует перечисления. Несколько примеров, в которых я думаю, что их использование будет полезным, - это Toast.LENGTH_SHORT
/Toast.LENGTH_LONG
и View.GONE
, View.VISIBLE
и т.д.
Почему это? Делают ли перечисления хуже, чем простые целочисленные значения в Dalvik? Есть ли еще какой-то недостаток, о котором я не знаю?