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