java如何将事务状态转换为fooState,这是ContractState的一种类型?
我正在尝试编写流测试,其中我需要检查已经消耗的输入状态。所以我从事务中提取了Stateref's
,并通过toStateandRef()
方法通过传递staterefs
来获得它们的数据。然后我运行了一个for循环来创建一个所有inputstates
的列表,对其进行instanceOf foostate
检查,但java无法将列表的内容强制转换为fooState
ERROR: Cannot Cast TransactionState to type 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);
# 1 楼答案
简单的做法:
List<fooState> inputsList = recordedTx.getTx().inputsOfType(fooState.class);