如何在Corda中比较状态的两个实例

时间:2018-07-16 05:21:37

标签: corda

我只想将状态更改为字段。所以我正在做的事情就像是处于消耗状态(在更新之前将具有初始状态)和未消耗状态(这将是具有更新字段的最新状态)。现在我具有这两个状态,那么我该怎么做才能找到更改的字段(字段名称)?

1 个答案:

答案 0 :(得分:2)

您可以利用反射来实现。以下是Kotlin代码段

fun compareFields(lineItem1: State1, lineItem2: State1): List<String> {

val differentFieldsNames = ArrayList<String>()
val differentFields = State1::class.memberProperties.filter {

    val startValue = it.get(lineItem1)
    val endValue = it.get(lineItem2)
    !Objects.deepEquals(startValue, endValue)
}
differentFields.forEach {
    println("Fields not matching "+" "+it.name)
    differentFieldsNames.add(it.name)

}
return differentFieldsNames

}