我在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)
//
}
1条答案
按热度按时间disbfnqx1#
不,如果你想把非空值从一个示例复制到另一个示例,你需要写一个方法/函数来做这件事。一个通用的机制来做到这一点并不存在。