如何将 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]))
。
提前致谢。
这里有两个问题:
Byte
和byte
是不同的类型
- 创建 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);
}
}
我的问题非常接近this question。但它不一样。 我有一个方法可以接受带有
签名的可变参数static void doSomething(byte[]... values)
以及我想发送给该方法的 byte[] 列表。
List<byte[]> myList;
如何将 myList
转换为 byte[]
可变参数以发送到 doSomething
?
我以为会是这样的
doSomething(myList.toArray(new Byte[][0]));
但这没有用 - 它说 unexpected token at 0]))
。
提前致谢。
这里有两个问题:
Byte
和byte
是不同的类型- 创建 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);
}
}