Подтвердить что ты не робот

Java: конвертировать список байтов в массив байтов

Попытка решить, что должно быть простой проблемой. Получил список байтов, хочу преобразовать его в конце функции в массив байтов.

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

компилятор не любит синтаксис на моем toArray. Как это исправить?

4b9b3361

Ответ 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> сбор).

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

Это избавляет вас от необходимости делать промежуточное преобразование массива, которое требует эквивалент Commons Lang.