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

10-09 01:37