gpt4 book ai didi

kotlin - Kotlin-是否可以将属性值传递给具有相同名称的属性的另一个对象?

转载 作者:行者123 更新时间:2023-12-02 13:07:44 24 4
gpt4 key购买 nike

有没有一种方法可以将属性值传递给具有相同名称的属性的另一个对象,从而避免使用“重复”代码?

例如,避免CepReceiptsInfovalue是不同的类,但它们共享一些属性名称和类型:

   val cepReceiptsInfo = CepRecepitsInfo()
cepReceiptsInfo.operationTimestamp = value.operationTimestamp
cepReceiptsInfo.sentDate = value.sentDate
cepReceiptsInfo.sentTime = value.sentTime
cepReceiptsInfo.concept = value.concept
cepReceiptsInfo.referenceNumber = value.referenceNumber
cepReceiptsInfo.amount = value.amount
cepReceiptsInfo.trackingKey = value.trackingKey
cepReceiptsInfo.bankTarget = value.bankTarget
cepReceiptsInfo.bankSource = value.bankSource
cepReceiptsInfo.sourceClienteName = value.sourceClienteName
cepReceiptsInfo.beneficiaryName = value.beneficiaryName
cepReceiptsInfo.accountNumberTarget = value.accountNumberTarget
cepReceiptsInfo.term = value.term
cepReceiptsInfo.authorizationNumber = value.authorizationNumber
cepReceiptsInfo.linkCep = value.linkCep
cepReceiptsInfo.status = value.status
cepReceiptsInfo.bankSourceRefund = value.bankSourceRefund
cepReceiptsInfo.causeRefund = value.causeRefund
cepReceiptsInfo.accountTargetRefund = value.accountTargetRefund
cepReceiptsInfo.currency = value.currency
cepReceiptsInfo.accountNumberSource = value.accountNumberSource
cepReceiptsInfo.accountTypeSource = value.accountTypeSource
cepReceiptsInfo.accountTypeTarget = value.accountTypeTarget
cepReceiptsInfo.indicatorRefund = value.indicatorRefund
cepReceiptsInfo.amountIntRefund = value.amountIntRefund
cepReceiptsInfo.operationRefundTimestamp = value.operationRefundTimestamp
cepReceiptsInfo.dateMovement = value.dateMovement
cepReceiptsInfo.timeMovement = value.timeMovement
cepReceiptsInfo.dateRefund = value.dateRefund
cepReceiptsInfo.timeRefund = value.timeRefund

到f.e.这样的东西:
val cepReceiptsInfo = CepReceintsInfo()
cepReceiptsInfo.assignFrom(value)

这两个类都是 数据类

最佳答案

我不知道没有反射(reflection)的方法。

fun Any.assignFrom(other: Any) {
val thisProperties = this::class.memberProperties
.filterIsInstance<KMutableProperty<*>>()
.map { it.name to it }
.toMap()
for (property in other::class.memberProperties){
thisProperties[property.name]?.setter?.call(this, property.getter.call(other))
}
}

关于kotlin - Kotlin-是否可以将属性值传递给具有相同名称的属性的另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60440126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com