Java:将字节列表转换为字节数组

2022-09-01 04:13:55

试图解决一个应该很简单的问题。得到了一个字节列表,想要在函数末尾将其转换为字节数组。

final List<Byte> pdu = new ArrayList<Byte>();
....
return pdu.toArray(new byte[pdu.size()]);;

编译器不喜欢我的.如何解决这个问题?toArray


答案 1

编译器不喜欢它,因为不是。byte[]Byte[]

你可以做的是使用commons-lang的:ArrayUtils.toPrimitive(wrapperCollection)

Byte[] bytes = pdu.toArray(new Byte[pdu.size()]);
return ArrayUtils.toPrimitive(bytes);

如果您无法使用 commons-lang,只需循环访问数组并用值填充另一个类型数组(它们将自动取消装箱)byte[]

如果你能忍受而不是 - 保持这种方式。Byte[]byte[]


答案 2

使用Guava的方法Bytes.toArray(Collection<Byte> collection)。

List<Byte> list = ...
byte[] bytes = Bytes.toArray(list);

这样就省去了您自己需要的中间数组转换的麻烦。