有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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