我正在尝试编写流测试,其中需要对已经消耗的输入状态进行检查。因此,我从事务中提取了Stateref's
并通过toStateandRef()
通过staterefs
方法获取了它们的数据。然后,我运行了一个for循环以列出所有inputstates
的列表,以对instanceOf foostate
进行检查,但是java无法将列表的内容强制转换为fooState
。
错误:无法将TransactionState强制转换为fooState类型
List<StateRef> txInputs = recordedTx.getTx().getInputs();
List<TransactionState<ContractState>> inputsList = new ArrayList<>();
for (StateRef stateref :txInputs) {
StateAndRef<ContractState> inputState = node.getServices().toStateAndRef(stateref);
TransactionState<ContractState> individualinputStates = inputState.getState();
inputsList.add(individualinputStates);
}
assert (inputsList.stream().filter(it -> it instanceOf fooState).collect(Collectors.toList()).size() == 1);
最佳答案
简单地做:List<fooState> inputsList = recordedTx.getTx().inputsOfType(fooState.class);
关于java - 如何将Transaction State转换为ContractState类型的fooState?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54920127/