如何将Transaction State转换为ContractState类型的fooState?

时间:2019-02-28 07:03:29

标签: java blockchain corda

我正在尝试编写流测试,其中需要对已经消耗的输入状态进行检查。因此,我从交易中提取了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);

1 个答案:

答案 0 :(得分:1)

简单地做: List<fooState> inputsList = recordedTx.getTx().inputsOfType(fooState.class);