The compiler doesn’t like it, because byte[] isn’t Byte[].
What you can do is use commons-lang’s ArrayUtils.toPrimitive(wrapperCollection):
Byte[] bytes = pdu.toArray(new Byte[pdu.size()]);
return ArrayUtils.toPrimitive(bytes);
If you can’t use commons-lang, simply loop through the array and fill another array of type byte[] with the values (they will be automatically unboxed)
If you can live with Byte[] instead of byte[] – leave it that way.