如何将 byte[] 列表作为 varargs 参数传递?

How to pass a List of byte[] as a varargs parameter?

我的问题非常接近this question。但它不一样。 我有一个方法可以接受带有

签名的可变参数
static void doSomething(byte[]... values)

以及我想发送给该方法的 byte[] 列表。

List<byte[]> myList;

如何将 myList 转换为 byte[] 可变参数以发送到 doSomething

我以为会是这样的

doSomething(myList.toArray(new Byte[][0]));

但这没有用 - 它说 unexpected token at 0]))

提前致谢。

这里有两个问题:

  • Bytebyte是不同的类型
  • 创建 array-of-arrays 的语法不正确 - 应该是 new byte[0][]。老实说,数组的数组在这方面很烦人。我当然可以理解为什么您希望将 [0] 放在末尾,但在这种情况下,情况并非如此...

有了这个改变,就没问题了:

import java.util.*;

public class Test {

    public static void main(String[] args) {
        List<byte[]> myList = new ArrayList<>();
        myList.add(new byte[10]);
        myList.add(new byte[5]);
        doSomething(myList.toArray(new byte[0][]));
    }

    static void doSomething(byte[]... values) {
        System.out.printf("Array contained %d values%n", values.length);
    }
}