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