1D and 2D arrays generate the same code parameters, Obviously, the resulting code is incorrect.
function setOrders(Order[] calldata) external {}
function setOrderss(Order[][] calldata) external {}
Solidity code:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract TestArray {
struct Order {
address from;
address to;
}
function setOrder(Order calldata) external {}
function setOrders(Order[] calldata) external {}
function setOrderss(Order[][] calldata) external {}
// function get(uint256[][] calldata) external {}
}
use mvn web3j:generate-sources
get java code
public RemoteFunctionCall<TransactionReceipt> setOrder(Order param0) {
final Function function = new Function(
FUNC_SETORDER,
Arrays.<Type>asList(param0),
Collections.<TypeReference<?>>emptyList());
return executeRemoteCallTransaction(function);
}
public RemoteFunctionCall<TransactionReceipt> setOrders(List<Order> param0) {
final Function function = new Function(
FUNC_SETORDERS,
Arrays.<Type>asList(new org.web3j.abi.datatypes.DynamicArray<Order>(Order.class, param0)),
Collections.<TypeReference<?>>emptyList());
return executeRemoteCallTransaction(function);
}
public RemoteFunctionCall<TransactionReceipt> setOrderss(List<Order> param0) {
final Function function = new Function(
FUNC_SETORDERSS,
Arrays.<Type>asList(new org.web3j.abi.datatypes.DynamicArray<Order>(Order.class, param0)),
Collections.<TypeReference<?>>emptyList());
return executeRemoteCallTransaction(function);
}
How should I write this code?
public RemoteFunctionCall<TransactionReceipt> setOrderss(List<List<Order>> param0) {
// code
}
I'm using solidity 0.8.17, web3j 4.10.0.