Instance Mapping

Mapping to destination classes without a no arg constructor.

Due to the fact that ShapeShift uses reflection behind the scenes, destination classes need a no arg constructor. But in some cases you have no control over the destination classes and cannot modify them to add a no arg constructor. This is where Instance Mapping comes into play, you can pass already-instantiated destination objects to the map method.

Version 0.0.7 of ShapeShift introduced new Object Suppliers functionality as an improved solution for the no arg constructor issue.

data class SimpleEntity(
    val name: String,
    val description: String,
    val privateData: String
data class SimpleEntityDisplay(
    val name: String,
    val description: String

SimpleEntityDisplay does not have a no arg constructor. You can either add a no arg constructor or initiate a new instance of SimpleEntityDisplay and pass it to the map function.

val shapeShift = ShapeShiftBuilder().build()
val simpleEntity = SimpleEntity("test", "test description", "private data")
val simpleEntityDisplay = SimpleEntityDisplay("", "")
// Passing simpleEntityDisplay as a destination instance 
val result =, simpleEntityDisplay)

Last updated