问题描述
我的问题非常接近this question。但这不一样。 我有一个方法可以接受带有签名的varargs
static void doSomething(byte[]... values)
还有要发送给该方法的字节列表[]。
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);
}
}