android Kotlin-将一个示例的对象属性值复制到另一个示例

7gcisfzg  于 2023-06-20  发布在  Android
关注(0)|答案(1)|浏览(194)

我在Kotlin中有以下数据类:

data class Test(
    val one: Int?,
    val two: Int?,
    val three: Three?,
){
    
    data class Three(
        val four: Int?,
        val five: Five?,
    ){
        
        data class Five(
            val six: Int?,
            val seven: Int?,
        )
    }
}

和一个变量来存储这个类的示例:

val cache: Test = Test()

我有另一个函数,它返回“Test”的示例,只设置了一些属性。

fun onValueUpdated(newValue: Test){
    // i need to update the value of "cache" here if
    // any of the properties in "newValue" is not null.
    // Eg: if newValue = Test( two = 2 )
    // i need to update "cache" as cache?.two = 2 without affecting other values in cache.
}

有没有基于反射的方法,根据“newValue”更新“cache”中的值,而不是手动更新每个值?.

fun updateCache(newValue: Test, cache: Test){
    //......
    // copy all non-null values from "newValue" to cache (including nested ones)
    // 
}
disbfnqx

disbfnqx1#

不,如果你想把非空值从一个示例复制到另一个示例,你需要写一个方法/函数来做这件事。一个通用的机制来做到这一点并不存在。

相关问题