Я согласен с @paradigmatic, это правда, что при использовании Scala код будет намного чище, но иногда вы можете найти себе соответствие между классами дел, которые выглядят очень похожими, и это просто пустая трата нажатий клавиш.
Я начал работать над проектом для решения проблем, вы можете найти его здесь: https://github.com/bfil/scala-automapper
Он использует макросы для генерации сопоставлений для вас.
В настоящее время он может отобразить класс case в подмножество исходного класса case, он обрабатывает необязательные и необязательные поля, а также другие второстепенные вещи.
Я все еще пытаюсь выяснить, как спроектировать API для поддержки переименования или сопоставления определенных полей с пользовательской логикой, любая идея или вводная информация по этому вопросу будет очень полезной.
Это может быть использовано для некоторых простых случаев прямо сейчас, и, конечно, если отображение становится очень сложным, может быть, лучше просто определить отображение вручную.
Библиотека также позволяет вручную определять типы Mapping
между классами наблюдений в любом случае, который может быть предоставлен как неявный параметр для метода AutoMapping.map(sourceClass)
или sourceClass.mapTo[TargetClass]
.
UPDATE
Я только что выпустил новую версию, которая обрабатывает Iterables, Maps и позволяет передавать динамические отображения (например, для поддержки переименования и пользовательской логики)