Попытка решить, что должно быть простой проблемой. Получил список Байтов, хотят преобразовать его в конце функции к массиву байтов.
final List<Byte> pdu = new ArrayList<Byte>();
....
return pdu.toArray(new byte[pdu.size()]);;
компилятору не нравится синтаксис на моем toArray
. Как зафиксировать это?
Компилятору это не нравится, потому что байт []
не является байтом []
.
Что вы можете сделать, так это использовать commons-lang ArrayUtils.toPrimitive (wrapperCollection)
:
Byte[] bytes = pdu.toArray(new Byte[pdu.size()]);
return ArrayUtils.toPrimitive(bytes);
Если вы не можете использовать commons-lang, просто пропустите array и заполните другой массив типа byte []
значениями (они будут автоматически распакованы)
Если вы можете жить с Byte []
вместо byte [ ]
- оставьте так.
Используйте метод Guava Bytes.toArray (Collection
List<Byte> list = ...
byte[] bytes = Bytes.toArray(list);
Это избавляет вас от необходимости выполнять промежуточное преобразование массива, которое требует эквивалент Commons Lang.
В основном, вы не можете использовать примитивный тип с toArray(T[])
.
См: Как преобразовать List
попробуйте также Dollar (проверьте эту ревизию):
import static com.humaorie.dollar.Dollar.*
...
List<Byte> pdu = ...;
byte[] bytes = $(pdu).convert().toByteArray();