java - Better way to map Kotlin data objects to data objects -


i want convert/map "data" class objects similar "data" class objects. example, classes web form classes database records.

data class personform(     val firstname: string,     val lastname: string,     val age: int,     // maybe many fields exist here address, card number, etc.     val tel: string ) // maps ... data class personrecord(     val name: string, // "${firstname} ${lastname}"     val age: int, // copy of age     // maybe many fields exist here address, card number, etc.     val tel: string // copy of tel ) 

i use modelmapper such works in java, can't used because data classes final (modelmapper creates cglib proxies read mapping definitions). can use modelmapper when make these classes/fields open, must implement features of "data" class manually. (cf. modelmapper examples: https://github.com/jhalterman/modelmapper/blob/master/examples/src/main/java/org/modelmapper/gettingstarted/gettingstartedexample.java)

how map such "data" objects in kotlin?

update: modelmapper automatically maps fields have same name (like tel -> tel) without mapping declarations. want data class of kotlin.

update: purpose of each classes depends on kind of application, these placed in different layer of application.

for example:

  • data database (database entity) data html form (model/view model)
  • rest api result data database

these classes similar, not same.

i want avoid normal function calls these reasons:

  • it depends on order of arguments. function class many fields have same type (like string) broken easily.
  • many declarations nesessary though mappings can resolved naming convention.

of course, library has similar feature intended, information of kotlin feature welcome (like spreading in ecmascript).

is looking for?

data class personrecord(val name: string, val age: int, val tel: string){            object modelmapper {         fun from(form: personform) =              personrecord(form.firstname + form.lastname, form.age, form.tel)                } } 

and then:

val personrecord = personrecord.modelmapper.from(personform) 

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -