我的问题与这个问题非常接近。但情况不同。我有一个方法可以接受带有类似的签名的varargs
static void doSomething(byte[]... values)
以及我想发送给该方法的byte[]的列表。
List<byte[]> myList;
如何将myList
转换为byte[]
变量并发送到doSomething
?
我以为它会像
doSomething(myList.toArray(new Byte[][0]));
但这并没有奏效——上面写着unexpected token at 0]))
。
提前谢谢。
这里有两个问题:
Byte
和byte
是不同的类型- 创建数组数组的语法不正确,应该是
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);
}
}