В большинстве случаев я бы передавал фактический тип Enum (Item
в этом примере), а не строковое представление. Это обеспечивает правильную печать и является целью Enums.
Одна из ситуаций, когда вам может потребоваться передать строковое представление (полученное из Enum.name()
), связана с проблемами сериализации / управления версиями.
Например, если у вас запущено несколько экземпляров приложения, и вы не всегда можете быть уверены, что они работают с одинаковыми версиями, вы можете просто передать представление String между ними и попытаться десериализовать их вручную (используя valueOf()
) и обрабатывать любые различия таким образом.