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

试图解决什么应该是一个简单的问题。 有一个Bytes列表,想要在函数末尾将它转换为一个字节数组。

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

编译器不喜欢我的toArray上的语法。 如何解决这个问题?

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

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

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

如果你不能使用commons-lang,只需循环遍历数组并用值填充另一个byte[]类型的数组(它们将自动取消装箱)

如果您可以使用Byte[]而不是byte[] – 请保持这种方式。

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

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

这可以节省您必须进行Commons Lang等效的中间数组转换。

主要是,您不能将原始类型与toArray(T[])

请参阅: 如何在Java中将List 转换为int []? 。 这是应用于整数的相同问题。

也尝试Dollar ( 查看此修订版 ):

 import static com.humaorie.dollar.Dollar.* ... List pdu = ...; byte[] bytes = $(pdu).convert().toByteArray();