Ответ 1
Да, именование может показаться немного длиннее. Но не так много, как можно было себе представить.
-
Поскольку класс enum уже предоставляет некоторый контекст ( "Что такое набор констант, к которому это принадлежит?" ), имя экземпляра обычно короче, чем имя константы (сильная типизация уже отличен от аналогичных именованных экземпляров в других перечислениях).
-
Кроме того, вы можете использовать статический импорт для дальнейшего сокращения длины. Вы не должны использовать его везде, чтобы избежать путаницы, но я чувствую, что код, который сильно связан с перечислением, может быть в порядке с ним.
-
В переключателя в перечислении вы не используете имя класса. (Переключатели даже не возможны в Strings pre Java 7.)
-
В самом классе перечисления используются короткие имена.
-
Поскольку перечисления имеют методы, многие низкоуровневые коды, которые могли бы сильно использовать константы, могли мигрировать из бизнес-кода в сам класс перечисления (либо динамический, либо статический метод). Как мы видели, переносимый код в enum уменьшает использование длинных имен еще больше.
-
Константы часто обрабатываются группами, такими как
if
, которые проверяют равенство с одной из шести констант или четырьмя другими и т.д. Перечисления оснащеныEnumSets
с помощью методаcontains
(или аналогично динамический метод, который возвращает соответствующую группу), которые позволяют относиться к группе как к группе (как второстепенное преимущество, обратите внимание, что эти две реализации группировки необычайно быстры - O (1) - и низкий по памяти!).
При всех этих моментах я узнал, что фактические коды намного короче!