Kotlin数据类的copy()值丢失

oogrdqng  于 2022-12-30  发布在  Kotlin
关注(0)|答案(1)|浏览(163)

我有这样的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
        )
}

当我使用update函数处理一个字段完全填充的对象时,我得到一个idcreatedAtcreatedBymodifiedAt字段为空的对象(它们变成等于null),但是为什么会发生这种情况?为什么这些字段会丢失它们的值?
Kotlin的文件说:
使用copy()函数来复制对象,允许您修改它的一些属性,同时保持其余的不变

7kqas0il

7kqas0il1#

答案其实就在你的链接里,就在“复制”之前的段落里。
编译器仅将主构造函数内定义的属性用于自动生成的函数。

相关问题