虽然我检查了 kotlinpoet 代码中的所有测试,但是我没有找到合适的方法来实现以下目标代码,或者我不确定我是否使用了最好的方法来做到这一点。如果有人可以对此提供一些评论,那将不胜感激。
这些属性是在一个类的函数中定义的
目标代码 1
val outputState = StateType1(iouValue, ourIdentity, otherParty)
我使用下面的代码来生成上面的代码
.addCode(CodeBlock.of("%L",
PropertySpec.builder("outputState", ClassName("","StateType1"))
.initializer(CodeBlock.of("%T(%L, %L, %L)", ClassName("","StateType1"), "iouValue", "ourIdentity", "otherParty"))
.build()))
但问题是这个 outputState 可能来自不同的类型,例如,StateType1 有 3 个参数,但 StateTyp2 可能只有 1 个参数,我应该如何动态定义我的 kotlinpoet 代码以生成正确的目标代码。
目标代码 2
val txBuilder = TransactionBuilder(notary = notary)
.addOutputState(outputState, TEMPLATE_CONTRACT_ID)
我没有找到具有这种情况的参考测试用例,在属性的初始化程序之后直接调用它的函数。