我想将一些"数据"类对象转换/映射到类似的"数据"类对象.例如,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
)
Run Code Online (Sandbox Code Playgroud)
我在Java中使用ModelMapper进行此类工作,但由于数据类是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数据类实例中的属性值?