我想转换/映射一些“数据”类对象到类似的“数据”类对象。例如,Web 表单的类到数据库记录的类。
data class PersonForm(
val firstName: String,
val lastName: String,
val age: Int,
// maybe many fields exist here like address, card number, etc.
val tel: String
)
// maps to ...
data class PersonRecord(
val name: String, // "${firstName} ${lastName}"
val age: Int, // copy of age
// maybe many fields exist here like address, card number, etc.
val tel: String // copy of tel
)
我使用 ModelMapper 在 Java 中完成这些工作,但是不能使用它,因为数据类是 final (ModelMapper 创建 CGLib 代理来读取映射定义)。当我们打开这些类/字段时,我们可以使用 ModelMapper,但是我们必须手动实现“ data”类的特性。 (参考 ModelMapper 示例: https://github.com/jhalterman/modelmapper/blob/master/examples/src/main/java/org/modelmapper/gettingstarted/GettingStartedExample.java)
如何在 Kotlin 映射这些“数据”对象?
更新: ModelMapper 自动映射具有相同名称的字段(如 tel-> tel) ,而不需要映射声明。我想用 Kotlin 的数据类来做。
更新: 每个类的用途取决于应用程序的类型,但是这些类可能位于应用程序的不同层。
例如:
这些类相似,但不相同。
由于以下原因,我想避免正常的函数调用:
当然,目的是建立一个具有类似功能的库,但也欢迎提供 Kotlin 功能的信息(就像在 ECMAScript 中传播一样)。