如何将字节列表[]作为varargs参数传递



我的问题与这个问题非常接近。但情况不同。我有一个方法可以接受带有类似的签名的varargs

static void doSomething(byte[]... values)

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

List<byte[]> myList;

如何将myList转换为byte[]变量并发送到doSomething

我以为它会像

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

但这并没有奏效——上面写着unexpected token at 0]))

提前谢谢。

这里有两个问题:

  • Bytebyte是不同的类型
  • 创建数组数组的语法不正确,应该是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);
}
}

最新更新