web3j的StaticArray是抽象的

web3j's StaticArray is abstract

我在 macOS 上使用最新的 solc 和 web3j(通过 brew)。

我已经编译了 smartcontract 并生成了 java 代码以在我的项目中使用,但是生成的代码使用了抽象的 StaticArray: error: StaticArray is abstract; cannot be instantiated Arrays.<Type>asList(new org.web3j.abi.datatypes.StaticArray<org.web3j.abi.datatypes.DynamicBytes>(

我在 Solidity 中的构造函数如下所示: constructor(string[] memory foo1, bytes[keyByteSize] memory foo2, bytes[keyByteSize] memory foo3, bytes[keyByteSize] memory foo4)

部署函数生成为:

String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.Utf8String>(
                        org.web3j.abi.datatypes.Utf8String.class,
                        org.web3j.abi.Utils.typeMap(foo1, org.web3j.abi.datatypes.Utf8String.class)), 
                new org.web3j.abi.datatypes.StaticArray<org.web3j.abi.datatypes.DynamicBytes>(
                        org.web3j.abi.datatypes.DynamicBytes.class,
                        org.web3j.abi.Utils.typeMap(foo2, org.web3j.abi.datatypes.DynamicBytes.class)), 
                new org.web3j.abi.datatypes.StaticArray<org.web3j.abi.datatypes.DynamicBytes>(
                        org.web3j.abi.datatypes.DynamicBytes.class,
                        org.web3j.abi.Utils.typeMap(foo3, org.web3j.abi.datatypes.DynamicBytes.class)), 
                new org.web3j.abi.datatypes.StaticArray<org.web3j.abi.datatypes.DynamicBytes>(
                        org.web3j.abi.datatypes.DynamicBytes.class,
                        org.web3j.abi.Utils.typeMap(foo4, org.web3j.abi.datatypes.DynamicBytes.class))));
        return deployRemoteCall(Foo.class, web3j, credentials, contractGasProvider, BINARY, encodedConstructor);
    }

是bug还是我做错了什么?

事实证明 web3j 不支持实验性 ABI