Java: преобразуйте Список Байтов к массиву байтов

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

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

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

29
задан Bozho 23 April 2011 в 21:42
поделиться

4 ответа

Компилятору это не нравится, потому что байт [] не является байтом [] .

Что вы можете сделать, так это использовать commons-lang ArrayUtils.toPrimitive (wrapperCollection) :

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

Если вы не можете использовать commons-lang, просто пропустите array и заполните другой массив типа byte [] значениями (они будут автоматически распакованы)

Если вы можете жить с Byte [] вместо byte [ ] - оставьте так.

46
ответ дан 28 November 2019 в 01:06
поделиться

Используйте метод Guava Bytes.toArray (Collection collection) .

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

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

22
ответ дан 28 November 2019 в 01:06
поделиться

В основном, вы не можете использовать примитивный тип с toArray(T[]).

См: Как преобразовать List в int[] в Java?. Эта же проблема применима к целым числам.

2
ответ дан 28 November 2019 в 01:06
поделиться

попробуйте также Dollar (проверьте эту ревизию):

import static com.humaorie.dollar.Dollar.*
...

List<Byte> pdu = ...;
byte[] bytes = $(pdu).convert().toByteArray();
1
ответ дан 28 November 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: