Je veux convertir/carte quelques "données" de la classe d'objets similaires "données" des objets de la classe. Par exemple, les classes de formulaire web pour des classes pour les enregistrements de base de données.
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
)
J'utilise ModelMapper pour ces travaux en Java, mais il ne peut pas être utilisé parce que les classes de données sont définitives (ModelMapper crée CGLib procurations de lire la cartographie des définitions). Nous pouvons utiliser ModelMapper lorsque nous faisons de ces classes, des champs ouverts, mais nous devons mettre en œuvre des fonctionnalités de "données" de la classe manuellement. (cf. ModelMapper exemples: https://github.com/jhalterman/modelmapper/blob/master/examples/src/main/java/org/modelmapper/gettingstarted/GettingStartedExample.java)
Comment relier ces "données" des objets dans Kotlin?
Mise à jour: ModelMapper mappe automatiquement les champs qui ont le même nom (comme tel -> tel) sans cartographie des déclarations. Je veux le faire avec classe de données de Kotlin.
Mise à jour: Le but de chacune des classes dépend de quel genre d'application, mais ce sont probablement placé dans la couche différente d'une application.
Par exemple:
- les données de la base de données (Base de données d'Entité) de données de formulaire HTML (Modèle/Vue Modèle)
- API REST résultat aux données de la base de données
Ces classes sont similaires, mais ne sont pas les mêmes.
Je veux éviter normal appels de fonction pour ces raisons:
- Il dépend de l'ordre des arguments. Une fonction de classe avec de nombreux domaines qui sont de même type (comme String) sera cassé facilement.
- De nombreuses déclarations sont nesessary bien que la plupart des mappages peuvent être résolus avec la convention de nommage.
Bien sûr, une bibliothèque qui a une fonction similaire est prévu, mais les informations de la Kotlin fonctionnalité est également la bienvenue (comme la propagation dans ECMAScript).