То, что вы делаете, не является автоматическим преобразованием c на основе типов между двумя моделями данных, которые являются ADT (класс случая или запечатанный), java bean, et c или их наборы, сгенерированные безопасно при компиляции -time
Это String
анализ. (Выполнено во время выполнения, поэтому возможно, что оно потерпит неудачу). Если вы часто разбираете имена перечислений в значения перечислений, я предлагаю использовать enumeratum (он также поддерживает многие другие операции над перечислениями)
import enumeratum._
sealed trait Mode extends EnumEntry
object Mode extends Enum[Mode] {
val values = findValues
case object On extends Mode
case object Off extends Mode
}
Mode.withName("On")
Это просто не вариант использования Chimney - и я говорю это как один из соавторов Chimney.
В качестве альтернативы, если вы не хотите изменять существующий код, вы можете получить класс типов для обработки всех видов реализаций перечислений, используя enumz (отказ от ответственности, я написал вещь)
io.scalaland.enumz.Enum
Enum[Mode].withName("On")