Home > Net >  Values loss for copy() for Kotlin data class
Values loss for copy() for Kotlin data class

Time:12-28

I have such data class:

data class BookObject(
    val description: String?,

    val owningCompanyData: OwningCompanyData?,
) {
    var id: String? = null
    var createdAt: Instant? = null
    var createdBy: String? = null
    var modifiedAt: Instant? = null

    fun update(command: CreateOrUpdateBookObjectCommand): BookObject =
        this.copy(
            description = command.description,
            owningCompanyData = command.owningCompanyData
        )
}

When I use the update function for an object with completely filled fields, I get an object with empty id, createdAt, createdBy, modifiedAt fields (they become equal to null). But why is this happening? Why do these fields lose their values?

The kotlin documentation says:

Use the copy() function to copy an object, allowing you to alter some of its properties while keeping the rest unchanged.

CodePudding user response:

The answer actually is present in your link, located in the paragraph just before "Copying".

The compiler only uses the properties defined inside the primary constructor for the automatically generated functions.

  • Related